LockSupport工具类,Condition接口

一、LockSupport工具类

           提供一系列方法如下:

提供的静态方法 方法描述
public static void park() 阻塞当前线程,除非调用unpark方法或者当前线程中断才能返回
public static void park(Object blocker)  
public static void parkNanos(long nanos) 阻塞当前线程,最长时间不超过nanos纳秒,返回条件在part()增加了超时时间
public static void parkNanos(Object blocker, long nanos)  
public static void parkUntil(long deadline) 阻塞当前线程,直到deadline(从1970年开始到deadline时间的毫秒数)
public static void parkUntil(Object blocker, long deadline)  
public static void unpark(Thread thread) 唤醒处于阻塞状态的线程Thread

   如上在jdk1.5之前没有如上红色的方法,在之后才添加了这些方法,这些方法都是在之前的参数中提供了Object blocker对象,这个是为了在dump线程数据时,可以在dump结果中看到当前阻塞对象的信息(仅此而已)。      

二、Condition接口

       1. 这是一个接口,提供的方法如下:

   

还有新增的一个方法(可以给等待时间自定义单位): 

boolean await(long time, TimeUnit unit) throws InterruptedException; //自定义时间单位

说明:signal是唤醒等待时间最长的一个线程,并让这个线程从等到队列加入到同步竞争队列中,

          signalAll效果就是对每一个线程都执行了signal方法,让他们都从等到队列加入到同步竞争队列

2. Condition提供了类似Object的监视器方法,和Lock配合可以实现等待和通知模式,

           Condition是通过Lock类的newCondition方法建立的。Object的监视器方法和Condition接口的对比如下:

          

猜你喜欢

转载自blog.csdn.net/weixin_40792878/article/details/81321300