锁对象
java.util.concurrent.locks.Lock
方法:
- void lock();
- 获取这个锁;如果锁同时被另一个线程拥有则发生阻塞。
- void lockInterruptibly() throws InterruptedException;
- 获得锁, 但是会不确定地发生阻塞。如果线程被中断, 抛出一个 InterruptedException异常。
- boolean tryLock();
- 尝试获得锁而没有发生阻塞;如果成功返回真。这个方法会抢夺可用的锁, 即使该锁有公平加锁策略, 即便其他线程已经等待很久也是如此。
- boolean tryLock(long time, TimeUnit unit) throws InterruptedException;
- 尝试获得锁,阻塞时间不会超过给定的值;如果成功返回 true。
- void unlock();
- 释放这个锁。
- Condition newCondition();
- 返回一个与该锁相关的条件对象。
条件对象
java.util.concurrent.locks.Condition
方法:
- void await() throws InterruptedException
- 将该线程放到条件的等待集中。
- void awaitUninterruptibly()
- 进人该条件的等待集, 直到线程从等待集移出才解除阻塞。如果线程被中断, 该方法不会抛出 InterruptedException 异常。
- long awaitNanos(long nanosTimeout) throws InterruptedException
- boolean await(long time, TimeUnit unit) throws InterruptedException
- 进人该条件的等待集, 直到线程从等待集中移出或等待了指定的时间之后才解除阻塞。如果因为等待时间到了而返回就返回 false , 否 则 返 回 true。
- boolean awaitUntil(Date deadline) throws InterruptedException
- void signal()
- 从该条件的等待集中随机地选择一个线程, 解除其阻塞状态。
- void signalAll()
- 解除该条件的等待集中的所有线程的阻塞状态。
java.lang.Object
-
public final void wait() throws InterruptedException
-
导致线程进人等待状态直到它被通知。该方法只能在一个同步方法中调用。如果当前线程不是对象锁的持有者,该方法拋出一个 IllegalMonitorStateException 异常。
-
-
public final void wait(long timeout, int nanos) throws InterruptedException
-
nanos 纳秒数,<1 000 000
-
-
public final native void wait(long timeout) throws InterruptedException
-
导致线程进入等待状态直到它被通知或者经过指定的时间。这些方法只能在一个同步方法中调用。如果当前线程不是对象锁的持有者该方法拋出一个 IllegalMonitorStateException异常。
-
millis 毫秒数
-
-
public final native void notify()
-
随机选择一个在该对象上调用 wait 方法的线程, 解除其阻塞状态。该方法只能在一个同步方法或同步块中调用。如果当前线程不是对象锁的持有者, 该方法抛出一个IllegalMonitorStateException 异常。
-
-
public final native void notifyAll()
-
解除那些在该对象上调用 wait 方法的线程的阻塞状态。该方法只能在同步方法或同步块内部调用。如果当前线程不是对象锁的持有者,该方法拋出一个 IllegalMonitorStateException异常。
-