java LockSupport park unpart方法的理解

LockSupport非常灵活,类的说明文档(javadoc)中有很好的示例,FutureTask中使用了LockSupport对get方法进行阻塞。

LockSupport.unPark(thread),给线程分配一个许可(premit),线程最多只能拥有一个许可;
LockSupport.park(),消费费线程的一个许可(premit),此时线程拥有的许可可能是0或-1;

线程默认拥有0个许可。
unpark()方法可在park()方法之前。
当线程拥有的许可时0或1时,线程是可运行的;当线程拥有的许可是-1时,线程被阻塞。

探究LockSupport实现原理

你可能感兴趣的:(java基础,并发)