java线程的park unpark方法
标签(空格分隔): 多线程
park 和 unpark的使用
park和unpark并不是线程的方法,而是LockSupport的静态方法
暂停当前线程
LockSupport.park();//所在的线程调用
恢复某个线程的运行
LockSupport.unpark(暂停线程对象)//由另外的线程调用,
park/unpark与wait/notify的区别
wait/notify必须在有锁的情况下使用(需要关联Monitor对象),park/unpark没有这个限制条件。
park/unpark配对使用能够精确的指定具体的线程的阻塞/运行,notify只能随机唤醒一个线程
park/unpark配对使用可以先unpark,wait/notify配合使用不能够先notify。
补充知识:
线程的六种状态
1.NEW:线程刚刚被创建时,还没有start()的状态
2.RUNABLE: Java中的RUNABLE包含了操作系统层面的运行,阻塞,可运行状态。
操作系统层面的线程的运行,阻塞等在Java层面无法体现出来。
BLOCKED,WAITING,TIMED_WAITINGJava API层面的阻塞
3.TIMED_WAITING:使用sleep方法可能会出现
4.WAITING: 使用join,wait方法后可能会出现
5.BLOCKED:使用synchronize方法可能会出现
6.diey:线程运行结束