LockSupport是一个实用的线程阻塞工具,提供了线程阻塞和唤醒的静态方法。
LockSupport使用类似信号量的机制。当调用LockSupport.unpark()时,给当前线程提供了一个调用LockSupport.park()的许可。和信号量不同的是,这个许可不可以累加(即连续的unpark()和1次效果一样)。提供的主要方法如下:
下面给出一个简单的demo:
从上述代码可以看出,LockSupport.unpark(t1)执行的条件是,有在线程t1里面执行LockSupport.park(),否则会阻塞。如果在主线程里执行两次LockSupport.unpark(t1),则效果还是一样的。