大数据中的信号量机制的应用
来源:互联网 发布:ubuntu默认root登录 编辑:程序博客网 时间:2024/04/30 12:32
信号量机制:针对用户量比较多,处理能力有限
应用一:
class Keng//坑位--资源{ final Semaphore sp=new Semaphore(10,true);//信号量,3个新号 10个信号量 坑(资源)最多有10个 void getitem() throws InterruptedException//获取资源 { // sp.acquire();// 占坑 一次占用一个坑 sp.acquire(5);//释放 团体。个人 //一次一个线程申请(使用)5个资源,故每次只能有2个线程 } void freeitem()//释放资源 {// sp.release();//释放坑 sp.release(5);//一次申请5个资源,一次也要释放5个资源 } public void tKeng(String name) { //System.out.println(sp.getQueueLength());//多少线程等待在等待 System.out.println("可以使用的资源个数是:"+sp.availablePermits());//还有多少可用坑位 资源 try { this.getitem(); System.out.println(Thread.currentThread().getName()+Thread.currentThread().getId()+" "+name +" 使用ing"); //Thread.sleep((int) (Math.random()*10000) );//每个线程使用完释放资源的时间是随机数 Thread.sleep(5000 ); //没次休眠5s,同时使用完资源,同时释放资源 } catch (InterruptedException ex) { Logger.getLogger(Keng.class.getName()).log(Level.SEVERE, null, ex); } finally { System.out.println(Thread.currentThread().getName()+Thread.currentThread().getId()+" "+name+" 使用ed"); this.freeitem(); } }}class Boy implements Runnable{ Keng keng=null; String name=""; public Boy(Keng keng,String name) { this.keng=keng; this.name=name; } public void run() { this.keng.tKeng(name); }}public class SimpleSemaphore{ public static void main(String[] args) { Keng keng=new Keng(); Set<Thread> boys=new HashSet<>();//Thread 放到HashSet中 //开启25个线程 for(int i=0;i<5;i++) { boys.add(new Thread ( new Boy(keng,"第VIP "+i+"号") ) ); } for(int i=0;i<20;i++) { boys.add(new Thread ( new Boy(keng,"第"+i+"号") ) ); } for(Thread th:boys)// 遍历HashSet 分别开启进程 { th.start(); } }}
0 0
- 大数据中的信号量机制的应用
- 信号量机制及其应用
- 信号量机制在WINDOWS编程中的实际应用
- 信号量机制在WINDOWS编程中的实际应用
- JVM的GC机制以及大数据中应用
- linux中的信号量机制
- 进程中的信号量机制
- 大数据时代:大数据的应用
- 信号量实现的机制
- 大数据在sport中的应用
- 大数据在世界杯中的应用
- 大数据在灾难中的应用
- 大数据在营销中的应用
- 大数据在高校中的应用
- 大数据在智慧交通中的应用
- 关键时刻的大数据应用
- 大数据的商业应用
- 大数据的实际应用。
- Redis服务搭建及使用Keepalived实现主从双机热备
- poj3685 Matrix二分
- 【C++11学习笔记】返回类型后置语法
- 微信小程序cx-让webApp应用“弹指之间”、跨入web轻应用开发
- js插件的经典写法与总结
- 大数据中的信号量机制的应用
- wrapper-windows-x86 window 10安装
- 藏锋出鞘,新人出道
- linux安装教程
- Spring 拦截器
- Spring事务管理UnexpectedRollbackException
- Linux中RPM 和 YUM 包管理详解
- Node初学(一)require方法
- ProcessHacker实现原理(一)