第七章 取消与关闭

1.中断:每个线程都有一个boolean类型的中断状态,中断是一种协作机制。

public class Thread{
    //中断目标线程
    public void interrupt(){...}
    //返回目标线程的中断状态
    public boolean isInterrupted(){...}
    //清除当前线程的中断状态,并返回它之前的值,清除中断状态的唯一方法
    public static boolean interrupted(){...}
    ...      
}

2.阻塞库方法:

  在线程阻塞情况下,检查线程何时中断,并在发现中断时提前返回。响应中断的操作包括:清楚中断状态,抛出InterruptedException,表示阻塞操作由于中断而提前结束。

  Thread.sleep:线程进入休眠,保留持有的锁

  Object.wait:当一个线程执行到wait方法时,它就进入到一个和该对象相关的等待池,同时释放对象的机锁,使得其他线程能够访问。可以通过notify,notifyAll方法来唤醒等待的线程,使该线程进入锁的竞争池。

3.守护线程

  守护线程:在JVM启动时创建的所有线程中,除了主线程以外,其他线程都是守护线程(例如垃圾回收器以及其他执行辅助工作的线程)。

  当创建一个线程时,新线程将会继承创建它的线程的守护状态,在默认的情况下,主线程创建的所有线程都是普通线程。当JVM停止时,所有仍然存在的守护线程都将被抛弃——即不会执行finally代码块,也不会执行回卷栈,JVM直接退出。  

猜你喜欢

转载自www.cnblogs.com/walker993/p/9290090.html