public class SemaphoreDemo {
private static class Task implements Runnable{
final Semaphore semp = new Semaphore(5);
@Override
public void run() {
try {
//获得许可
semp.acquire();
System.out.println("获取到许可, 开始访问资源");
//模拟耗时操作
TimeUnit.SECONDS.sleep(2);
System.out.println(Thread.currentThread().getId()+ " is Done !");
semp.release(); //释放许可
System.out.println("释放许可");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(20);
Task task = new Task();
for (int i = 1; i<=25; i++) {
executorService.submit(task);
}
}
}
SemaphoreDemo
最新推荐文章于 2024-06-17 00:30:40 发布