Java Thread 总结

1、Thread 实现 Runable 接口,多线程实现内容放在 run 方法,或者实现一个 Runable 接口,将改 Runable 设置给线程。

2、Thread 可以设置是否守护线程(setDaemon(boolean on)),守护线程的作用是确保该线程创建的线程退出时,该线程才会退出。

3、Thead 有六种状态,枚举类组成,分别为:

           a.NEW:线程还没有执行 start 方法状态

           b. RUNABLE:可运行状态,但是在等待某种系统资源,比如 CPU

           c. BLOCKED: 将要进入 synchronized 块,但是在等待锁;wait 方法后重入锁快时等待获取锁。

         d.WAITING:调用 wait() 、Thread.join()、LockSupport.park()  方法后

        e.TIMED_WAITING:wait(long) 、Thread.join(long) 方法后,有时间参数相对于WAITING

        f.TERMINATED:线程执行完成

4、Thread.join:阻塞当前前程,直至该线程执行完成

main() {
Thread subThread = new Thread(()-> {
   sleep(10000)
   // 1

});

subThread.start();
subThrea.join();
//2 只有等待 1 处执行完毕(subThread 执行完毕),才会执行到这里
}

5、wait 方法之后会释放锁,等到超时/被notify 后重新获取锁,锁被持有的如下面的顺序

main(){

Object object = new Object();

new Thread(()-> {
    synchronized(object) {// 1 获取锁
        object.wait(); // 2 释放锁
        // 5 重新获取锁
    }

}).start();

new Thread(()-> {
    synchronized(object) { // 3 等待上面的线程进入 wait 之后 获取锁
        object.notify();
    }
    // 4 释放锁

}).start();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值