`
lijunaccp
  • 浏览: 159072 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Semaphore关于抢车位例子

 
阅读更多
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#实现抢车位游戏详解》 在编程领域,C#是一种广泛应用的编程语言,尤其在Windows平台上的软件开发中占据重要地位。本篇将详细解析一个基于C#开发的抢车位游戏,通过源代码分析,揭示其背后的编程思想和技术要点...

    semaphore完整搭建ansible部署方案

    源码通常包含 README 文件,提供关于如何编译和安装软件的指示。如果 Semaphore 使用了虚拟环境或特定的依赖项,这些信息也会在源码包中给出。 `semaphore_linux_amd64` 文件是 Semaphore 的预编译二进制版本,适用...

    semaphore-develop.zip

    Semaphore是一款强大的持续集成/持续部署(CI/CD)工具,主要设计用于自动化软件构建、测试和部署流程。在这个"semaphore-develop.zip"压缩包中,包含的应该是Semaphore的开发源码,这对于理解其内部工作原理、自定义...

    Swift-dispatch-semaphore

    在这个例子中,`DispatchSemaphore`保证了同时只有一个线程在下载图片,避免了并发访问导致的问题。 在实际应用中,`DispatchSemaphore`常用于以下场景: - 控制数据库或网络请求的并发数量,防止过多的并发请求...

    semaphore控制多线程循序执行

    Semaphore(信号量)是一种经典的同步机制,它源自于荷兰计算机科学家Edsger W. Dijkstra提出的银行家算法。本示例中,我们将深入探讨如何使用Semaphore来控制多线程的循序执行。 Semaphore是一种计数信号量,它...

    mutex和semaphore互斥程序实例

    `mutex`(互斥锁)和`semaphore`(信号量)都是用于实现线程同步和互斥的工具,确保同一时间只有一个线程可以访问特定的共享资源。本文将深入探讨这两种机制及其在实际编程中的应用。 一、互斥锁(Mutex) 互斥锁是...

    C#语言Semaphore类用法实例(多线程多端口使用端口控制)

    在这个例子中,我们创建了10个线程,但只有5个能够同时运行,因为Semaphore限制了并发访问的端口数量。线程在`WaitOne()`处阻塞,直到有足够的许可证可用。完成后,通过`Release()`归还许可证,允许其他线程继续执行...

    Semaphore进程间通讯测试源码

    Semaphore是Windows操作系统中的一种同步机制,它用于控制多个进程对共享资源的访问。在这个"Semaphore进程间通讯测试源码"中,我们可以看到如何在MFC(Microsoft Foundation Classes)框架下利用Semaphore实现进程...

    Semaphore 源码解析

    Semaphore是Java并发编程中的一种重要工具,主要用于控制并发线程的访问权限,实现限流或资源的互斥访问。在高并发场景下,Semaphore能够有效地防止过多的线程同时访问共享资源,从而避免系统资源耗尽,提高系统性能...

    Semaphore的使用及其方法的使用

    Semaphore的使用及其方法的使用。

    Ansible-semaphore.zip

    在 Ansible-semaphore.zip 文件中,包含的是 Semaphore 的源代码,特别是 "semaphore-master" 这个目录,这通常意味着它是项目的主分支或最新版本。 Semaphore 主要特点包括: 1. **Web GUI**:Semaphore 提供了一...

    Linux下多线程编程-Pthread与Semaphore的使用.doc

    Linux 下多线程编程-Pthread 与 Semaphore 的使用 Linux 下的多线程编程是通过使用 POSIX 线程接口,称为 pthread 实现的。要编写 Linux 下的多线程程序,需要使用头文件 pthread.h,连接时需要使用库 libpthread.a...

    Semaphore T-BOX System Overview.PDF

    Semaphore T-BOX System OverviewPDF,Semaphore T-BOX System Overview

    java并发之Semaphore信号量.md

    Semaphore是计数信号量。Semaphore管理一系列许可证。每个acquire方法阻塞,直到有一个许可证可以获得然后拿走一个许可证;每个release方法增加一个许可证,这可能会释放一个阻塞的acquire方法。然而,其实并没有...

    利用semaphore实现shm进程通信

    ### 利用Semaphore实现SHM进程通信:深入解析与实践 #### 进程通信概述 在多进程系统中,进程间通信(IPC)是确保不同进程之间能够共享数据和协调运行的关键技术。根据《利用semaphore实现shm进程通信》一文,主要...

    使用信号量(Semaphore)实现线程的同步

    信号量(Semaphore)是操作系统中一种重要的同步机制,它用于管理多个线程对共享资源的访问,以防止并发执行时产生竞态条件。在多线程编程中,当多个线程试图同时访问一个有限的资源时,信号量可以帮助我们协调这些...

    OC-dispatch-semaphore

    在这个例子中,即使有多个任务提交到串行队列,也只会有一个任务在任何时候执行,因为它们都需要先获取到信号量。 总的来说,`OC-dispatch_semaphore`是iOS开发中处理多线程同步的有效工具,它可以限制对共享资源的...

    pthread.h sched.h semaphore.h 三个头文件

    标题提到的"pthread.h"、"sched.h"和"semaphore.h"是三个在多线程编程和进程调度中常用的头文件,特别是在Linux和类Unix系统中。然而,这里我们看到这些文件在Windows环境下使用Cygwin进行darknet编译时也有所需求。...

    OS-semaphore.rar_Semaphore_semaphore. windows

    操作系统中的信号量(Semaphore)是一种重要...在《OS信号量机制.ppt》这份资料中,可能包含了更多关于Windows系统下信号量的详细实现、使用示例以及常见问题的解决方法,建议深入学习以提升在多任务环境下的编程能力。

Global site tag (gtag.js) - Google Analytics