我是靠谱客的博主 大意期待,最近开发中收集的这篇文章主要介绍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线程终止模式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部