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多线程的信号量的更多相关文章

  1. java多线程-Semaphore信号量使用

    介绍 信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确.合理的使用公共资源. 概念 Semaphore分为单值和多值两种,前者 ...

  2. Java多线程系列——信号量:Semaphore

    简介 信号量为多线程协作提供了更为强大的控制方法.也可以说,信号量是对锁的扩展.无论是内部锁 synchronized 还是重入锁 ReentrantLock,一次都只允许一个线程访问一个资源,而信号 ...

  3. java多线程----Semaphore信号量

    import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util ...

  4. Java多线程_Semaphore信号量

    概念: Semaphore是信号量,又称为信号灯,它可以控制某个共享资源可被同时访问的次数,即可以维护当前访问某一共享资源的线程个数,并提供了同步机制.当Semaphore的个数变成1时,即代表只允许 ...

  5. Java多线程并发工具类-信号量Semaphore对象讲解

    Java多线程并发工具类-Semaphore对象讲解 通过前面的学习,我们已经知道了Java多线程并发场景中使用比较多的两个工具类:做加法的CycliBarrier对象以及做减法的CountDownL ...

  6. java 多线程 一个博客

    http://blog.csdn.net/a352193394/article/category/2563875 Java多线程之~~~线程安全容器的非阻塞容器 在并发编程中,会经常遇到使用容器.但是 ...

  7. Java多线程系列——从菜鸟到入门

    持续更新系列. 参考自Java多线程系列目录(共43篇).<Java并发编程实战>.<实战Java高并发程序设计>.<Java并发编程的艺术>. 基础 Java多线 ...

  8. Java多线程系列--“JUC锁”11之 Semaphore信号量的原理和示例

    概要 本章,我们对JUC包中的信号量Semaphore进行学习.内容包括:Semaphore简介Semaphore数据结构Semaphore源码分析(基于JDK1.7.0_40)Semaphore示例 ...

  9. [java多线程] - 锁机制&同步代码块&信号量

    在美眉图片下载demo中,我们可以看到多个线程在公用一些变量,这个时候难免会发生冲突.冲突并不可怕,可怕的是当多线程的情况下,你没法控制冲突.按照我的理解在java中实现同步的方式分为三种,分别是:同 ...

随机推荐

  1. WebLogic使用SSH架构部署遇到org.hibernate.hql.internal.ast.HqlTok

    其实这个问题在以前就遇到过,当时解决了,但今天在部署一个测试轻应用的时候一直没有想起来,特此记录一下. 这个问题出现在使用WebLogic(我使用的是10.3.5版本)发布SSH架构的应用.在操作数据 ...

  2. Session、Application、Cache

    [Asp.Net]状态管理(Session.Application.Cache) 上篇博文介绍了在客户端状态管理的两种方式:http://www.cnblogs.com/wolf-sun/p/3329 ...

  3. 对类sizeof的时候

    sizeof一个类的时候,都什么会被计算?静态成员会被计算进来么?如果这是一个子类,它的父类成员会被计算么? #include<stdio.h> #include<string.h& ...

  4. SecureCRT退出全屏方法

    今天在使用SecureCRT的过程中,无意点了全屏,导致SecureCRT连接某台服务器的seesion全屏.后来想退出全屏,SecureCRT没有任何提示,上网查了一下资料说: 退出全屏的命令是AL ...

  5. ASP.NET Web API 基础篇1

    ASP.NET Web API 直到我膝盖中了一箭[1]基础篇 无题 蓦然回首,那些年,我竟然一直很二. 小时候,读武侠小说的时候,看到那些猪脚,常常会产生一种代入感,幻想自己也会遭遇某种奇遇,遇到悬 ...

  6. CentOS上搭建java WEB开发环境Tomcat+MySQL+JDK

    对于初学者来说,想在linux系统上搭建一个java web服务器,不知道什么方案可行, 这篇文章主要是告诉这些基础和概念相对薄弱的同学,这样搭建是可行的,大体上没问 题的,出问题也是细节问题.所以此 ...

  7. c语言:快速排序

    练手代码(分治实现): input: int input[] = {12,6,3,9,10,6,2}; output: ======================= len = 7 input[0] ...

  8. js框架漫谈

    现在实际项目中可供选择的javascript框架很多,热门的有jquery,dojo,mootools,ext等.这些框架按照不同的标准有不同的分类方法,比如按照扩展方式便可分为prototype式的 ...

  9. GO数值和字符串的相互转换

    转自:http://blog.sina.com.cn/s/blog_9e14446a01018m9i.html 在做项目的时候,通常都会碰到字符串转换,在这介绍一下字符串与整型的相互转换.在golan ...

  10. wubi安装ubuntu后,增加swap大小,优化swap的使用参数-----------让ubuntu健步如飞,为编译android源码准备

    wubi安装ubuntu后,终端输入free -m可以查到如下信息: total used free shared buffers cached Mem: 1944 1801 143 0 557 70 ...