Java线程

作者: 韭菜待收割 | 来源:发表于2018-09-07 11:22 被阅读0次

1、线程的五个阶段

创建,就绪,运行,阻塞,终止

2、Thread和Runnable的区别

1.Runnable可以避免单继承的限制。 2.线程池只能放入实现Runnable或者Callable类线程,无法直接放入继承Thread的类。                  3.Runnable适合多个相同的程序代码的线程处理同一个资源。


3、wait()的作用

执行线程或者对象的wait()方法,JVM会把线程放入等待池,wait()方法会释放持有的锁。调用线程或者对象的notify或notifyAll可以进行唤醒。

注意:当前线程在调用wait()或者notify时,必须拥有该对象的同步锁,即在同步块中使用。

4、join()的作用

thread1.join();

指等待thread1线程终止才会继续执行之后的代码。

5、yield()的作用

Thread.yield();

指当前线程从运行状态切换为就绪状态。

6、阻塞状态分类

1.等待阻塞:运行的线程执行wait()方法,JVM会把该线程放入等待池。  2.同步阻塞:运行的线程未能获取同步锁时,JVM会把该线程放入等待池。                                          3.其它阻塞:运行的线程执行sleep()或者join()方法,或者发出io请求时,JVM会把该线程放入等待池。阻塞状态结束,线程会转入就绪状态。        注意:sleep()是不会释放持有的锁的。

7、线程中断

1.interrupt():中断线程。                2.interrupted():测试当前线程是否中断,线程的中断状态由该方法清除。                                          3.isInterrupted():测试当前线程是否中断,线程的中断状态不受该方法的影响。

当其它线程调用此线程的interrupt()方法时,会给此线程设置一个中断标志;sleep()、wait()等方法会检测这个标志,同时抛出InterruptedException,并清除线程的中断标志。sleep()、wait()方法也会提前结束。

相关文章

网友评论

    本文标题:Java线程

    本文链接:https://www.haomeiwen.com/subject/tdzqgftx.html