上海哪家公司做网站好,电商网站建设的相关内容,图文设计,软件培训班1. LockSupport工具 1.1 LockSupport的作用 当需要阻塞或唤醒一个线程的时候#xff0c;都会使用LockSupport工具类来完成相应工作。LockSupport定义了一组公共的静态方法#xff0c;这些方法提供了做基本的线程阻塞和唤醒功能。 1.2 LockSupport提供的阻塞和唤醒方法 方法描…1. LockSupport工具 1.1 LockSupport的作用 当需要阻塞或唤醒一个线程的时候都会使用LockSupport工具类来完成相应工作。LockSupport定义了一组公共的静态方法这些方法提供了做基本的线程阻塞和唤醒功能。 1.2 LockSupport提供的阻塞和唤醒方法 方法描述void park()阻塞当前线程如果调用unpark(Thread)方法或被中断才能从park()返回。void parkNanos(long nanos)阻塞当前线程的超时返回版本阻塞时间最长不超过nanos纳秒。void parkUntil(long deadline)阻塞当前线程直到deadline时间(从1970年开始到deadline时间的毫秒数)。void unpark(Thread)唤醒处于阻塞状态的线程.1.3 LockSupport新增的方法 在Java 6中LockSupport增加了park(Object blocker)、parkNanos(Object blocker, long nanos)、parkUntil(Object blocker, long deadline)这3个方法用于实现阻塞当前线程的功能其中参数blocker是用来标识当前线程在等待的对象该对象主要用于问题排查和系统监控。 2. Condition接口 2.1 Condition接口的理解 Java对象的wait()、notify()等方法和synchronized关键字配合可以实现等待/通知模式。此外还有一种方式可以实现等待/通知模式Condition接口与Lock接口配合。 2.2 Condition接口示例 public class ConditionUseCase {Lock lock new ReentrantLock();Condition condition lock.newCondition();public void conditionWait() throws InterruptedException {lock.lock();try {condition.await();} finally {lock.unlock();}}public void conditionSingnal() throws InterruptedException {lock.lock();try {condition.signal();} finally {lock.unlock();}}
}
复制代码1.Condition定义了等待/通知模式的相关方法并且Condition实例是由锁创建出来的在调用Condition的这些方法前需先获得和Condition对象相关联的锁。2.调用await()方法后当前线程释放锁并进入等待状态当其他对象调用Condition的signal()方法后当前线程才能从await()方法中返回且返回前已经获得了锁。2.3 Condition的方法 方法描述void await() throws InterruptedException当前线程进入等待状态直到被通知signal或者被中断。void awaitUninterruptibly()当前线程进入等待状态直到被通知对中断不做响应。long awaitNanos(long nanosTimeout) throws InterruptedExceptionvoid await() throws InterruptedException方法的超时等待版本返回值表示当前剩余的时间如果在nanosTimeout之前被唤醒返回值 nanosTimeout - 实际消耗的时间返回值 0表示超时。boolean awaitUntil(Date deadline) throws InterruptedException当前线程进入等待状态直到被通知、中断、到达某个时间点。在deadline时间点前线程能被通知或中断则返回true否则返回false。void signal()唤醒一个等待在Condition上的线程。void signalAll()唤醒所有等待在Condition上的线程。转载于:https://juejin.im/post/5d020a41f265da1ba25259af