Java并发多线程编程——Semaphore
Posted 小志的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java并发多线程编程——Semaphore相关的知识,希望对你有一定的参考价值。
一、Semaphore概述
- Semaphore的字面意思是信号量。
- Semaphore主要用于两个目的:
(1)、一个是用于多个共享资源的相互排斥使用。
(2)、另一个用于并发资源数的控制.。
二、Semaphore代码示例
模拟有限个车位,多个车辆抢车位案例。
-
代码
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 <= 10; i++) new Thread(()-> 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();
-
输出结果如下图:
以上是关于Java并发多线程编程——Semaphore的主要内容,如果未能解决你的问题,请参考以下文章
java多线程系列:一 并发工具类的使用_2 ( CountDownLatch CyclicBarrier Semaphore Exchanger )