public class OrderExecuteLockKit extends Object
请注意如果应该先执行的方法因为线程池当前的执行队列全部被靠后的占用,将导致产生死锁
使用方式如下:
import ConditionLock;
import OrderExecuteLockKit;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Test {
public static void main(String[] args) {
OrderExecuteLockKit executeLockKit = new OrderExecuteLockKit();
ExecutorService pool = Executors.newFixedThreadPool(3);
Run run1 = new Run(executeLockKit.getConditionLock(), "1");
Run run2 = new Run(executeLockKit.getConditionLock(), "2");
Run run3 = new Run(executeLockKit.getConditionLock(), "3");
pool.execute(run3);
pool.execute(run2);
pool.execute(run1);
}
public static class Run implements Runnable {
private final ConditionLock conditionLockKit;
private final String mes;
public Run(ConditionLock conditionLockKit, String mes) {
this.conditionLockKit = conditionLockKit;
this.mes = mes;
}
public void run() {
try {
conditionLockKit.getLock();
System.out.println(mes);
} finally {
conditionLockKit.unlock();
}
}
}
public ConditionLock getConditionLock()
优先获取到条件锁的对象,将优先执行
Copyright © 2019. All rights reserved.