Java源码-Thread 线程.类
Thread 线程类其实是一个实现了Runable接口的类。该类调用了许多底层的方法。所以下面你们会看到许多native的方法。
native修饰的方法:是指用其他语言(C/C++...)实现的方法。由此可见,底层语言是C/C++。
Thread 主要成员变量:
target(当前的Runable),ID (线程号),name(名称),
以及优先级、线程组、线程状态、锁、本地信息等。
主要方法:
1、start();开启一个线程。实则调用native start0()来创建一个线程。这也表明了start()与run()的本质区别。start()开始创建一个实质线程(不是指线程对象,而是OS中的线程)。run()并没有创建线程,它只是一个方法。
2、run():任务的逻辑代码块。执行Runable中的用户run方法。
3、exit():退出,用于释放资源。修饰词为private。这就表明我们不能直接销毁一个线程。(老版本Java有一些毁灭线程的方法,现在被弃用了,不建议使用,文章最后会稍微提一下)。
4、yield()、sleep(ms)两个都具有暂停工作的功能,但有很大区别,放在一起比较。
yield():它只是通知线程机制,我可以被同优先级的线程切换,但并不会一定被切换。
sleep():和yield一样,也是切换当前的线程。让其他线程进行工作,但sleep可以被低优先级的切换。
5、关于interrupt() interrupted() isInterrupted()
6、 join(ms) 如果这个线程还活着就一直等待 millis长时间、(使用 wait()方法)
最后还有一个未捕获异常的处理接口 。由于线程有时会抛出异常,但是该异常并不能在起main()线程中捕获,一旦出现未处理的异常那么会终止程序。使用开发者使用了一个 未捕获异常的处理方法来 捕获将要造成线程死亡的异常。
该异常处理方法是在线程因为没有捕获的异常而临近死亡时被调用。
是一个私有成员变量,使用Set、Get进行操作
线程的状态 State
被销毁的方法:
码字不易,引用注明