带你3分钟了解多线程
来源:忻州中公优就业IT培训学校时间:2020/10/7 17:23:05
1.什么叫多线程:
一个进程中有多个线程,称为多线程。
2.实现多线程的方法:
实现多线程可以通过继承Thread类和实现Runnable接口。
(1)继承Thread
定义一个类继承Thread类:复写Thread类中的publicvoidrun()方法,将线程的任务代码封装到run方法中,直接创建Thread的子类对象,创建线程,调用start()方法,开启线程(调用线程的任务run方法)。另外可以通过Thread的getName()获取线程的名称。
(2)实现Runnable接口:
定义一个类,实现Runnable接口;覆盖接口的publicvoidrun()的方法,将线程的任务代码封装到run方法中;创建Runnable接口的子类对象
将Runnabl接口的子类对象作为参数传递给Thread类的构造函数,创建Thread类对象(原因:线程的任务都封装在Runnable接口子类对象的run方法中。所以要在线程对象创建时就必须明确要运行的任务)。调用start()方法,启动线程。
两种方法区别:
(1)实现Runnable接口避免了单继承的局限性
(2)继承Thread类线程代码存放在Thread子类的run方法中
实现Runnable接口线程代码存放在接口的子类的run方法中;在定义线程时,建议使用实现Runnable接口,因为几乎所有多线程都可以使用这种方式实现
3.创建线程是为什么要复写run方法?
Thread类用于描述线程。Thread类定义了一个功能,用于存储线程要运行的代码,该存储功能就是run方法。
4.start()和run方法有什么区别?
调用start方法方可启动线程,而run方法只是thread的一个普通方法,调用run方法不能实现多线程;
Start()方法:
start方法用来启动线程,实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片(执行权),就开始执行run()方法,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止。
Run()方法:
run()方法只是Thread类的一个普通方法,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到多线程的目的。
5.线程的几种状态:
新建:new一个Thread对象或者其子类对象就是创建一个线程,当一个线程对象被创建,但是没有开启,这个时候,只是对象线程对象开辟了内存空间和初始化数据。
就绪:新建的对象调用start方法,就开启了线程,线程就到了就绪状态。在这个状态的线程对象,具有执行资格,没有执行权。
运行:当线程对象获取到了CPU的资源。在这个状态的线程对象,既有执行资格,也有执行权。
冻结:运行过程中的线程由于某些原因(比如wait,sleep),释放了执行资格和执行权。当然,他们可以回到运行状态。只不过,不是直接回到,而是先回到就绪状态。
死亡:当线程对象调用的run方法结束,或者直接调用stop方法,就让线程对象死亡,在内存中变成了垃圾。
尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/2414/news/262229/违者必究!
以上就是忻州中公优就业IT培训学校 小编为您整理 带你3分钟了解多线程的全部内容。