并发编程-Day02

1.1两阶段终止模式:

 Thread t1 = new Thread(() -> {
            while(true) {
                try {

                    if (Thread.currentThread().isInterrupted()) {
                        log.debug("处理后事");
                        break;
                    }
                    Thread.sleep(1000);
                    log.debug("监控中");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                    Thread.currentThread().interrupt();
                    //出现异常后interrupt重置为false,需要修改为true
                }
            }

        });
        t1.start();
        Thread.sleep(4000);
        t1.interrupt();
        log.debug("t1 end");

1.2关于park和中断标志位:

Thread thread = new Thread(() -> {
            log.debug("park");
            LockSupport.park();
            log.debug("unpark");
            log.debug("{}", Thread.currentThread().isInterrupted());
          //   log.debug("{}", Thread.Interrupted());

            LockSupport.park();
            log.debug("unpark");
        });
        thread.start();
        Thread.sleep(1000);
        thread.interrupt();

    }

关于isInterrupted()和Interrupted()方法
前者会拿到标志位,后者会改变并拿到标志位。
而park()方法在线程中使用会处于一个阻塞的状态,但是对于标志位为真的时候,park会失效。

1.3守护线程

 thread.setDaemon(true);//设置为守护线程

当主线程执行结束时,守护线程会被强制结束。
(例如java垃圾回收线程)



2. 1 线程的5种运行状态(操作系统层面)

初始状态、可运行状态、运行状态、终止状态、阻塞状态

线程的6种状态(java api层面)
NEW、RUNNABLE(运行状态、可运行状态、阻塞状态)、TERMINATED(终止状态)、BLOCKED、WAITING、 TIMED_WAITING。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值