我是靠谱客的博主 大意期待,这篇文章主要介绍09-park线程终止模式,现在分享给大家,希望可以做个参考。

创建线程通过LockSupport.park()打断自己

主线程通过 interrupt()、unPark()唤醒线程

下面以 interrupt() 来唤醒park()

import java.util.concurrent.locks.LockSupport;

import static java.lang.Thread.currentThread;

public class InterruptDemo02_park {
    public static void park() throws InterruptedException {
        Thread t1 = new Thread(()->{
            System.out.println("park......");
            LockSupport.park();
            System.out.println("unpark......");
            System.out.println("打断状态:"+Thread.currentThread().interrupted());
            LockSupport.park();
            System.out.println("unpark......");
        },"t1");
        t1.start();
        Thread.sleep(2000);
        t1.interrupt();
    }

}

【注:】

  1. 如果要执行打断的线程标记是true,LockSupport.park()无法执行,因为认为标记既然已经true了,那就是已经阻塞了,没必要再执行了,因此用Thread.currentThread().interrupted()判断当前线程标记,此方法最后会把标记刷回false
  2. park中断是WAITTING状态,可以通过getState()查看
  3. interrupt打断标记仅支持当前的park中断和sleep中断(即两阶段中止),其余比如wait()、join()、获取synchronized锁时均无法支持

最后

以上就是大意期待最近收集整理的关于09-park线程终止模式的全部内容,更多相关09-park线程终止模式内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(140)

评论列表共有 0 条评论

立即
投稿
返回
顶部