package com.test;
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;
public class SemaphoreTest
{
/**
* @param args
*/
public static void main(String[] args)
{
ExecutorService pool = Executors.newCachedThreadPool();
final Semaphore sp = new Semaphore(3); // 3个车位
for (int i = 0; i < 10; i++)
{
pool.execute(new Runnable()
{
public void run()
{
try
{
sp.acquire();
System.out.println("小车:" + Thread.currentThread().getName()
+ "已抢到车位,还有"+sp.availablePermits()+"个车位");
Thread.sleep(new Random().nextInt(10000));
sp.release();
System.out.println("小车:" + Thread.currentThread().getName()
+ "离开车位,还有"+sp.availablePermits()+"个车位");
}
catch (Exception e)
{
e.printStackTrace();
}
}
});
}
pool.shutdown();
}
}
分享到:
相关推荐
semaphore完整搭建方案,包括帮助文档、程序源码、可执行程序。按照帮助文档完整搭建可视化ansible部署解决方案
semaphore开发源码,ansible可视化部署服务程序,支持界面操作。
Semaphore的使用及其方法的使用。
semaphore控制多线程循序执行,网上 找的例子更改的希望对大家有用
Semaphore T-BOX System OverviewPDF,Semaphore T-BOX System Overview
mutex和semaphore互斥程序实例
关于Android变成中的信号量semaphore,在使用过程中我们往往搞不清楚其信号量的申请和使用。这里主要针对信号量初始值为零的情况做介绍,其他情况不做讨论。初始值为零的情况较少使用,部分代码中的这个情况往往让...
Semaphore 源码解析 通过使用Semaphore可以在高并发场景进行限流控制处理
Semaphore是计数信号量。Semaphore管理一系列许可证。每个acquire方法阻塞,直到有一个许可证可以获得然后拿走一个许可证;每个release方法增加一个许可证,这可能会释放一个阻塞的acquire方法。然而,其实并没有...
Semaphore_TBOX_产品-软件及系统功能
Linux下多线程编程-Pthread与Semaphore的使用.doc
使用信号量(Semaphore)实现线程的同步
多线程(C++)同步Semaphore
Semaphore进程间通讯测试源码,CreateSemaphoreW,OpenSemaphore,ReleaseSemaphore,WaitForSingleObjectEx
windows下安装cygwin,编译darknet时缺少的三个头文件,下载后复制到darknet下include文件夹内即可
信号量+共享存储区的进程间通信,互斥、同步
Ansible-semaphore.zip,可供选择的开源towerrelease,ansible是一个简单而强大的自动化引擎。它用于帮助配置管理、应用程序部署和任务自动化。
本文分析了内核同步及互斥的几种机制Waitqueue、Event及Semaphore的实现,详细分析了其实现流程。Event及Semaphore本质上都是基于Waitqueue和自旋锁实现的。总结了静态定义及动态初始化数据结构的相关规则,这对于...
C#语言Semaphore类用法实例,多线程 用于有多个同类型共享资源(比如端口)时,如何协调端口分配给线程访问资源的问题,是一个简单模拟实例(源代码)。
当前版本包括以下变量: 名称默认值描述semaphore_user_name 信号运行信号量服务的用户名semaphore_group_name 信号运行信号量服务的组名semaphore_user_uid 1000 Semaphore 服务用户的 UID semaphore_group_gid ...