阻塞和等待有啥区别
阻塞是争抢锁失败后被动触发、等待是人为主动触发
阻塞是持锁线程结束后自动唤醒,而等待需要人为用特定的方法唤醒
触发方式:阻塞是在争抢sychronized锁过程中失败后触发,一直到持有锁的线程结束再次争夺锁;WATING是通过Object.wait()方法来触发,此时线程必须持有锁才能触发,而Thread.join()、LockSupport.park()触发的话就不需要持有锁,也不会占用cpu资源
唤醒方式:需要等到持锁线程执行结束再次自动唤醒,而WATING的话如果是wait()进入的就需要用其对象的notify()或notifyAll()这样的方法来唤醒,若是Thread.join()等待执行线程结束后即可唤醒,LockSupport.park()的话需要用LockSupport.unpark

