import java.util.Random; import java.util.concurrent.Semaphore; /** * Semaphore的使用 * 模拟:餐厅2个座位,有4个人要等位就餐 */ public class UseSemaphore { private static class UseThread extends Thread { private String name; private Semaphore semaphore; public UseThread(String name, Semaphore semaphore) { this.name = name; this.semaphore = semaphore; } @Override public void run() { if (semaphore.availablePermits() <= 0) { System.out.println(name + " is waitting for a place to eat."); } try { semaphore.acquire(); System.out.println(name + " is eating."); Thread.sleep(new Random().nextInt(1000)); System.out.println(name + " finish his meal."); semaphore.release(); } catch (InterruptedException e) { e.printStackTrace(); } } } public static void main(String [] args) { Semaphore semaphore = new Semaphore(2); for (int i = 0; i < 4; i++){ new UseThread("第" + i+ "个人",semaphore).start(); } } }
Semaphore的使用
最新推荐文章于 2020-06-05 09:19:59 发布