import java.util.concurrent.Semaphore; /** * Semaphore:信息量主要用于两个目的,一个用于多个资源的互斥使用,一个用于并发线程数的控制 * 停车场争车位:多个线程抢多个资源;未抢到的等待别的离开让出。 */ public class SemaphoreDemo { public static void main(String[] args) { final Semaphore semaphore = new Semaphore(3);//3个车位 //6辆车 for (int i = 1; i < 8; i++) { final int temp = i; Thread thread = new Thread(new Runnable() { @Override public void run() { try { semaphore.acquire(); System.out.println(Thread.currentThread().getName() + "抢到车位"); Thread.sleep(1000); System.out.println(Thread.currentThread().getName() +"离开车位"); } catch (Exception e) { e.printStackTrace(); } finally { semaphore.release(); } } }); thread.setName(i+""); thread.start(); } } }
Semaphore 停车场争车位 多个线程抢多个资源
最新推荐文章于 2021-09-09 20:15:58 发布