欢迎光临
我们一直在努力

吃透 Java 线程状态:阻塞 VS 等待,notify 与 notifyAll 的本质区别

阻塞和等待有啥区别

阻塞是争抢锁失败后被动触发、等待是人为主动触发

阻塞是持锁线程结束后自动唤醒,而等待需要人为用特定的方法唤醒

触发方式:阻塞是在争抢sychronized锁过程中失败后触发,一直到持有锁的线程结束再次争夺锁;WATING是通过Object.wait()方法来触发,此时线程必须持有锁才能触发,而Thread.join()、LockSupport.park()触发的话就不需要持有锁,也不会占用cpu资源

唤醒方式:需要等到持锁线程执行结束再次自动唤醒,而WATING的话如果是wait()进入的就需要用其对象的notify()或notifyAll()这样的方法来唤醒,若是Thread.join()等待执行线程结束后即可唤醒,LockSupport.park()的话需要用LockSupport.unpark

赞(0)
未经允许不得转载:171主机测评 » 吃透 Java 线程状态:阻塞 VS 等待,notify 与 notifyAll 的本质区别
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址