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();
}
}
分享到:
相关推荐
《C#实现抢车位游戏详解》 在编程领域,C#是一种广泛应用的编程语言,尤其在Windows平台上的软件开发中占据重要地位。本篇将详细解析一个基于C#开发的抢车位游戏,通过源代码分析,揭示其背后的编程思想和技术要点...
源码通常包含 README 文件,提供关于如何编译和安装软件的指示。如果 Semaphore 使用了虚拟环境或特定的依赖项,这些信息也会在源码包中给出。 `semaphore_linux_amd64` 文件是 Semaphore 的预编译二进制版本,适用...
Semaphore是一款强大的持续集成/持续部署(CI/CD)工具,主要设计用于自动化软件构建、测试和部署流程。在这个"semaphore-develop.zip"压缩包中,包含的应该是Semaphore的开发源码,这对于理解其内部工作原理、自定义...
在这个例子中,`DispatchSemaphore`保证了同时只有一个线程在下载图片,避免了并发访问导致的问题。 在实际应用中,`DispatchSemaphore`常用于以下场景: - 控制数据库或网络请求的并发数量,防止过多的并发请求...
Semaphore(信号量)是一种经典的同步机制,它源自于荷兰计算机科学家Edsger W. Dijkstra提出的银行家算法。本示例中,我们将深入探讨如何使用Semaphore来控制多线程的循序执行。 Semaphore是一种计数信号量,它...
`mutex`(互斥锁)和`semaphore`(信号量)都是用于实现线程同步和互斥的工具,确保同一时间只有一个线程可以访问特定的共享资源。本文将深入探讨这两种机制及其在实际编程中的应用。 一、互斥锁(Mutex) 互斥锁是...
在这个例子中,我们创建了10个线程,但只有5个能够同时运行,因为Semaphore限制了并发访问的端口数量。线程在`WaitOne()`处阻塞,直到有足够的许可证可用。完成后,通过`Release()`归还许可证,允许其他线程继续执行...
Semaphore是Windows操作系统中的一种同步机制,它用于控制多个进程对共享资源的访问。在这个"Semaphore进程间通讯测试源码"中,我们可以看到如何在MFC(Microsoft Foundation Classes)框架下利用Semaphore实现进程...
Semaphore是Java并发编程中的一种重要工具,主要用于控制并发线程的访问权限,实现限流或资源的互斥访问。在高并发场景下,Semaphore能够有效地防止过多的线程同时访问共享资源,从而避免系统资源耗尽,提高系统性能...
Semaphore的使用及其方法的使用。
在 Ansible-semaphore.zip 文件中,包含的是 Semaphore 的源代码,特别是 "semaphore-master" 这个目录,这通常意味着它是项目的主分支或最新版本。 Semaphore 主要特点包括: 1. **Web GUI**:Semaphore 提供了一...
Linux 下多线程编程-Pthread 与 Semaphore 的使用 Linux 下的多线程编程是通过使用 POSIX 线程接口,称为 pthread 实现的。要编写 Linux 下的多线程程序,需要使用头文件 pthread.h,连接时需要使用库 libpthread.a...
Semaphore T-BOX System OverviewPDF,Semaphore T-BOX System Overview
Semaphore是计数信号量。Semaphore管理一系列许可证。每个acquire方法阻塞,直到有一个许可证可以获得然后拿走一个许可证;每个release方法增加一个许可证,这可能会释放一个阻塞的acquire方法。然而,其实并没有...
### 利用Semaphore实现SHM进程通信:深入解析与实践 #### 进程通信概述 在多进程系统中,进程间通信(IPC)是确保不同进程之间能够共享数据和协调运行的关键技术。根据《利用semaphore实现shm进程通信》一文,主要...
信号量(Semaphore)是操作系统中一种重要的同步机制,它用于管理多个线程对共享资源的访问,以防止并发执行时产生竞态条件。在多线程编程中,当多个线程试图同时访问一个有限的资源时,信号量可以帮助我们协调这些...
在这个例子中,即使有多个任务提交到串行队列,也只会有一个任务在任何时候执行,因为它们都需要先获取到信号量。 总的来说,`OC-dispatch_semaphore`是iOS开发中处理多线程同步的有效工具,它可以限制对共享资源的...
标题提到的"pthread.h"、"sched.h"和"semaphore.h"是三个在多线程编程和进程调度中常用的头文件,特别是在Linux和类Unix系统中。然而,这里我们看到这些文件在Windows环境下使用Cygwin进行darknet编译时也有所需求。...
操作系统中的信号量(Semaphore)是一种重要...在《OS信号量机制.ppt》这份资料中,可能包含了更多关于Windows系统下信号量的详细实现、使用示例以及常见问题的解决方法,建议深入学习以提升在多任务环境下的编程能力。