JAVA并发Semaphore信号量

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vmaps/article/details/80420162

同一个任务,不同的线程,锁住线程数

public class Test {
public static void main(String[] args) {
    int N = 8;            //工人数
    Semaphore semaphore = new Semaphore(5); //机器数目
    for(int i=0;i<N;i++)
        new Worker(i,semaphore).start();
}

static class Worker extends Thread{
    private int num;
    private Semaphore semaphore;
    public Worker(int num,Semaphore semaphore){
        this.num = num;
        this.semaphore = semaphore;
    }

    @Override
    public void run() {
        try {
            semaphore.acquire();
            System.out.println("工人"+this.num+"占用一个机器在生产...");
            Thread.sleep(2000);
            System.out.println("工人"+this.num+"释放出机器");
            semaphore.release();           
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
}

猜你喜欢

转载自blog.csdn.net/vmaps/article/details/80420162