Java信号量Semaphor解析
来源:互联网 发布:淘宝客 群介绍 编辑:程序博客网 时间:2024/06/16 02:35
我们应当知道,信号量代表的是一种有限的访问资源。在多线程的并发操作中,信号量在共享资源的控制中有着很重要的作用。Java中提供的Semaphor类可以对信号量进行操作,调用acquire()方法获取一个许可,如果没有则等待;调用release()方法释放一个许可,如果此时有其他访问者在等待资源许可,那么等待的访问者就会获取到许可。
下面的DEMO中,我们模拟一个场景:一个顾客想去吃汉堡,如果店里面没有现成的汉堡,那么就需要等待厨师做一个。
public class SemaphoreTest { public static void main(String[] args) { ExecutorService executor = Executors.newCachedThreadPool(); Semaphore semaphor = new Semaphore(0); executor.execute(new Runnable() { @Override public void run() { try { System.out.println("want to have a hamburger!"); semaphor.acquire(); System.out.println("start eat!"); Thread.currentThread().sleep(1000); System.out.println("end!"); } catch (InterruptedException e) { e.printStackTrace(); } } }); executor.execute(new Runnable() { @Override public void run() { try { if(semaphor.availablePermits()==0){ System.out.println("there is no hamburger,cook make one"); Thread.currentThread().sleep(1000); System.out.println("release a hamburger!"); semaphor.release(); } } catch (InterruptedException e) { e.printStackTrace(); } } }); }}/**输出结果*/want to have a hamburger!there is no hamburger,cook make onerelease a hamburger!start eat!end!
1 0
- Java信号量Semaphor解析
- 信号量解析
- java之JUC系列-外部Tools-Executors|Semaphor|Exchanger|CyclicBarrier|CountDownLatch
- java之JUC系列-外部Tools-Executors|Semaphor|Exchanger|CyclicBarrier|CountDownLatch
- java 信号量
- Java 信号量
- java 信号量
- JAVA 信号量
- JAVA--信号量
- Java 信号量
- 源码分析-Semaphor
- linux 信号量解析
- 全面解析信号量
- 信号量semaphore解析
- 信号量互斥量解析
- linux信号量解析
- linux信号量解析
- linux信号量解析
- 用java做一个2048小游戏
- vs shfit+ctrl+f 全局搜索失
- 把GIT导出的项目转换成Maven项目
- mybatis系列三:springMVC和mybatis的运用
- 基于 Python 的数据结构与算法分析学习记录(6-9)—— 二叉堆操作
- Java信号量Semaphor解析
- unity如何设置fog,shader如何接收fog
- Ubuntu下安装gsoap和onvif的文件生成
- MyEclipse快捷键大全(绝对全)
- QT日历控件
- 去除ec转as因为图片问题出现的错误
- 读书
- 圆与圆的位置关系教案制作
- 简单自定义Toast