这个是任务类,可以申请资源,有一个run方法,是子类实现的 import java.util.concurrent.Semaphore; /** * 抽象任务,具体的执行任务,归实现类负责 * * @author Administrator * */ public abstract class Task { public abstract void run(); private Semaphore s; private boolean hasExisted = false; public void P(final Semaphore s) throws InterruptedException { if (s == null) { // 申请空的信号量 throw new InterruptedException("不能为空"); } if (hasExisted) {// 已经申请了一个资源,还没有释放 throw new InterruptedException("已经占用一个资源"); } s.acquire();// 阻塞 this.s = s; hasExisted = true; } public boolean V() { if (!hasExisted) { return false;// 没沾有资源就不能说释放了 } s.release();//释放资源 hasExisted = false; s = null; return true; } } 这个是互斥对象,用于实现互斥 import java.util.concur