目录
一、Semaphore概述
- 一、Semaphore概述
- 二、Semaphore代码示例
- Semaphore的字面意思是信号量。
- Semaphore主要用于两个目的: (1)、一个是用于多个共享资源的相互排斥使用。 (2)、另一个用于并发资源数的控制.。
模拟有限个车位,多个车辆抢车位案例。
-
代码
import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; /** * @description: 抢车位案例 * @author: xz */ public class SemaphoreDemo { public static void main(String[] args) { robCar(); } private static void robCar(){ //模拟5个停车位 Semaphore semaphore = new Semaphore(5); for (int i = 1; i { try { semaphore.acquire();//抢到资源 System.out.println("线程:"+Thread.currentThread().getName() + "\t抢到车位"); try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("线程:"+Thread.currentThread().getName() + "\t 停3秒离开车位"); } catch (InterruptedException e) { e.printStackTrace(); } finally { semaphore.release();//释放资源 } },String.valueOf(i)).start(); } } }
-
输出结果如下图: