Java多线程的信号量
Java的信号量主要的作用是控制线程对资源的访问例如我一个线程池里面有100个线程等待执行,但是我允许最多同时运行5个线程,这5个线程只有其中一个线程执行完毕后,在线程池中等待的线程才能进入开始执行,我们可以这样设计程序:
/**
* 该示例展示了如何使用信号量
* @author Administrator
*
*/
public class MySemaphore { public static void main(String[] args) throws IOException, InterruptedException {
final Semaphore semaphore = new Semaphore(5);
ExecutorService exec = Executors.newCachedThreadPool();
for (int i = 0; i < 20; i++) {
final int num = i;
Runnable task = new Runnable() {
@Override
public void run() {
try {
semaphore.acquire();
System.out.println("计算器:" + num + " 可用信号量:" + semaphore.availablePermits());
semaphore.release();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
exec.submit(task);
}
}
}
aaarticlea/png;base64,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" alt="" />
Java多线程的信号量的更多相关文章
- java多线程-Semaphore信号量使用
介绍 信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确.合理的使用公共资源. 概念 Semaphore分为单值和多值两种,前者 ...
- Java多线程系列——信号量:Semaphore
简介 信号量为多线程协作提供了更为强大的控制方法.也可以说,信号量是对锁的扩展.无论是内部锁 synchronized 还是重入锁 ReentrantLock,一次都只允许一个线程访问一个资源,而信号 ...
- java多线程----Semaphore信号量
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util ...
- Java多线程_Semaphore信号量
概念: Semaphore是信号量,又称为信号灯,它可以控制某个共享资源可被同时访问的次数,即可以维护当前访问某一共享资源的线程个数,并提供了同步机制.当Semaphore的个数变成1时,即代表只允许 ...
- Java多线程并发工具类-信号量Semaphore对象讲解
Java多线程并发工具类-Semaphore对象讲解 通过前面的学习,我们已经知道了Java多线程并发场景中使用比较多的两个工具类:做加法的CycliBarrier对象以及做减法的CountDownL ...
- java 多线程 一个博客
http://blog.csdn.net/a352193394/article/category/2563875 Java多线程之~~~线程安全容器的非阻塞容器 在并发编程中,会经常遇到使用容器.但是 ...
- Java多线程系列——从菜鸟到入门
持续更新系列. 参考自Java多线程系列目录(共43篇).<Java并发编程实战>.<实战Java高并发程序设计>.<Java并发编程的艺术>. 基础 Java多线 ...
- Java多线程系列--“JUC锁”11之 Semaphore信号量的原理和示例
概要 本章,我们对JUC包中的信号量Semaphore进行学习.内容包括:Semaphore简介Semaphore数据结构Semaphore源码分析(基于JDK1.7.0_40)Semaphore示例 ...
- [java多线程] - 锁机制&同步代码块&信号量
在美眉图片下载demo中,我们可以看到多个线程在公用一些变量,这个时候难免会发生冲突.冲突并不可怕,可怕的是当多线程的情况下,你没法控制冲突.按照我的理解在java中实现同步的方式分为三种,分别是:同 ...
随机推荐
- 企业架构研究总结(25)——TOGAF架构开发方法(ADM)之迁移规划阶段
1.8 迁移规划(Migration Planning) 企业架构开发方法各阶段——迁移规划 1.8.1 目标 本阶段的目标是: 确保实施和迁移规划与企业中各种管理框架相协调. 通过对每个进行中的成本 ...
- cocos2d-x 实现跨平台的目录遍历
可能各位看官们有更好的方法,请不吝赐教. #ifdef _WIN32 #include <io.h> #else #include <unistd.h> #include &l ...
- 该死的类型转换For input string: "[Ljava.lang.String;@1352dda"
今天又遇见了这个该死的问题,还是记下来备忘. 从map里取值的时候,将OBJECT对象 先转换成String 然后转换成integer报错 java.lang.NumberFormatExceptio ...
- sql 数据库还原脚本 (kill链接+独占
在开发过程中经常会碰到数据库还原,要是sql 连接没完全释放掉,那么还原就会受到阻碍.此脚本就是为了解决这个问题. USE [master] GO /****** Object: StoredProc ...
- 微软IE11浏览器的7大变化
微软IE11浏览器的7大变化 投递人 itwriter 发布于 2013-06-29 11:48 评论(9) 有1025人阅读 原文链接 [收藏] « » 微软很看重自己的 IE 浏览器,这款浏 ...
- Dalvik虚拟机的垃圾收集机制
垃圾收集机制是Java虚拟机共有的特性, 这里介绍Dalvik虚拟机的垃圾收集机制特点. 在android2.3之前,有以下几个特点: 1. 垃圾收集线程在执行的时候,其它线程都停止. 2. 一次 ...
- ADO.NET—两种连接模式
一.ADO.NET简介 ADO.NET的名称起源于ADO(ActiveX Data Objects),这是一个广泛的类组,用于在以往的Microsoft技术中访问数据.用来访问数据库,.NET环境下首 ...
- 写一个Redis封装类
打算自己封装一个Redis操作类,方便使用,且有一定log记录.Redis的封装思路:基于Redis类进一步封装 一般属性 单例 (配置参数从配置文件中读取还是写死?考虑多配置之间切换) 常规操作根据 ...
- JSP引擎的工作原理
JSP运行环境: 执行JSP代码需要在服务器上安装JSP引擎,比较常见的引擎有WebLogic和Tomcat.把这些支持JSP的web服务器配置好后.就可以再客户端通过浏览器来访问JSP页面了.默认端 ...
- express搭建简易web的服务器
express搭建简易web的服务器 说到express我们就会想到nodejs,应为它是一款基于nodejs平台的web应用开发框架.既然它是基于nodejs平台的框架那么就得先安装nodejs. ...