LockSupport源码分析
LockSupport简介
LockSupport可以控制线程的状态,从而达到线程在等待唤醒之间切换的目的,并且不用担心阻塞和唤醒操作的顺序,但要注意连续多次唤醒的效果和一次唤醒是一样的。
注意:unpark 函数可以先于 park 调用。
【LockSupport与的区别】
- LockSupport.park和unpark不需要在同步代码块中,wait和notify是需要的。
- LockSupport的pork和unpark是针对线程的,而wait和notify是可以是任意对象。
- LockSupport的unpark可以让指定线程被唤醒,但是notify是随机唤醒一个,notifyAll是全部唤醒,不够灵活。
park和unpark都是调用native方法,由JVM实现: