时间:2015-07-20 来源:

javaSemaphore信号亮-允许多个任务同时访问这个资源--thinkinginjava21.7.6【编程语言】

package org.rui.thread.newc.semaphore; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Semaphore; /** * 允许N个任务同时访问这个资源 * @author lenovo * * @param <T> */ public class Pool<T> { private int size; private List<T> items = new ArrayList<T>(); private volatile boolean[] checkedOut; private Semaphore available; public Pool(Class<T> classObject, true); // load pool with objects that can be checked out:可以检查的对象的负载池 for (int i = 0; i < size; i++) { // assumes a default constructor自己的默认构造函数 try { // Object o=classObject.newInstance(); // Fat f=(Fat) classObject.newInstance(); items.add(classObject.newInstance()); } catch (Exception e) { throw new RuntimeException(e); } } } //如果你需要一个新对象,psd转html在使用完后递交给checkIn() public T checkOut() throws InterruptedException { //如果没有任何的Semaphore许何证,html切图意味着池中没有对象可用了 available.acquire();//获取一个许可(如果提供了一个)并立即返回,wap前端外包将可用的许可数减 1. return getItems(); } public void checkIn(T x) { if (releaseItem(x)) //如果被签入的对象有效web前端制作,则会向信号亮返回一个许可证 available.release();//释放一个许可,web前端制作将其返回给信号量. } private synchronized T getItems() { for (int i = 0; i < size; ++i) { //System.out.println(checkedOut[i]); if (!checkedOut[i])//如果为false 说明是releaseItem 则可以签出 { checkedOut[i] = true; //System.out.println("xxxxxx===="+items.get(i)); return items.get(i); } } return null;// semaphore prevents reaching here防止信号到达这里 } private synchronized boolean releaseItem(T item) { int index = items.indexOf(item); if (index == -1) return false;// not in the list if (checkedOut[index])//如果为true 则说明已签出 则可以释放 { //System.out.println("releaseItem:"+item); checkedOut[index] = false; return true; } return false;// wasn't checked out 没有签出 } }

package org.rui.thread.newc.semaphore; public class Fat { private volatile double d; private static int counter = 0; private final int id = counter++; public Fat() { // expensive, int size) { this.pool = pool; this.index = size; } @Override public void run() { try { T item = pool.checkOut(); System.out.println(this + "checked out 已签出:" + item); TimeUnit.SECONDS.sleep(1); System.out.println("checked in 释放:" + item); pool.checkIn(item);// 将用完的对像释放 // System.out.println(index+" counter="+counter+" id=="+id); // if(index==counter-1){ // TimeUnit.SECONDS.sleep(1); // System.out.println("=======all checkoutTasks created"); // // } } catch (InterruptedException e) { System.out.println(e.getMessage()); // TODO Auto-generated catch block // e.printStackTrace(); } } @Override public String toString() { return "checkoutTask " + id + " "; } } // ////////////////////////// public class SemaphoreDemo { final static int Size = 25; public static void main(String[] args) throws InterruptedException { final Pool<Fat> pool = new Pool<Fat>(Fat.class, i)); } System.out.println("all checkoutTasks created"); // main 开始签出pool中的Fat对象 -1,但并不签入他们. // 一但池中的所有的对象都被签出后,符合w3c标准semaphore将不在执行任何签出操作网页外包接活,取消web前端制作,冗余的签入将被pool忽略 System.out.println("任务是否完成:"+blocked.isDone()); blocked.cancel(true);// break out of blocked call 中断呼叫中断 试图取消对此任务的执行 System.out.println(); /////////////////都签入之后 再可以继续使用pool for (Fat f : list) { pool.checkIn(f); } //这里其实可以再次使用pool了,web前端制作 for (Fat f : list) { pool.checkIn(f);// second checkin ignored 二签忽略 } // exec.shutdown(); } } /** * output: * checkoutTask 0 checked out 已签出:Fat>>id:0 checkoutTask 2 checked out 已签出:Fat>>id:2 checkoutTask 1 checked out 已签出:Fat>>id:1 checkoutTask 4 checked out 已签出:Fat>>id:3 checkoutTask 3 checked out 已签出:Fat>>id:4 checkoutTask 5 checked out 已签出:Fat>>id:5 checkoutTask 6 checked out 已签出:Fat>>id:6 checkoutTask 7 checked out 已签出:Fat>>id:7 checkoutTask 8 checked out 已签出:Fat>>id:8 checkoutTask 9 checked out 已签出:Fat>>id:9 checkoutTask 10 checked out 已签出:Fat>>id:10 checkoutTask 11 checked out 已签出:Fat>>id:11 checkoutTask 12 checked out 已签出:Fat>>id:12 checkoutTask 13 checked out 已签出:Fat>>id:13 checkoutTask 14 checked out 已签出:Fat>>id:14 checkoutTask 15 checked out 已签出:Fat>>id:15 checkoutTask 16 checked out 已签出:Fat>>id:16 checkoutTask 18 checked out 已签出:Fat>>id:18 checkoutTask 17 checked out 已签出:Fat>>id:17 checkoutTask 19 checked out 已签出:Fat>>id:19 checkoutTask 20 checked out 已签出:Fat>>id:20 checkoutTask 21 checked out 已签出:Fat>>id:21 checkoutTask 22 checked out 已签出:Fat>>id:22 checkoutTask 23 checked out 已签出:Fat>>id:23 all checkoutTasks created 0 >>main() thrad checked out 签出 operation>> Fat>>id:24 checked in 释放:Fat>>id:1 checkoutTask 24 checked out 已签出:Fat>>id:1 checked in 释放:Fat>>id:2 1 >>main() thrad checked out 签出 operation>> Fat>>id:2 checked in 释放:Fat>>id:0 2 >>main() thrad checked out 签出 operation>> Fat>>id:0 checked in 释放:Fat>>id:3 3 >>main() thrad checked out 签出 operation>> Fat>>id:3 checked in 释放:Fat>>id:4 4 >>main() thrad checked out 签出 operation>> Fat>>id:4 checked in 释放:Fat>>id:5 5 >>main() thrad checked out 签出 operation>> Fat>>id:5 checked in 释放:Fat>>id:7 6 >>main() thrad checked out 签出 operation>> Fat>>id:7 checked in 释放:Fat>>id:9 7 >>main() thrad checked out 签出 operation>> Fat>>id:9 checked in 释放:Fat>>id:11 8 >>main() thrad checked out 签出 operation>> Fat>>id:11 checked in 释放:Fat>>id:13 9 >>main() thrad checked out 签出 operation>> Fat>>id:13 checked in 释放:Fat>>id:15 10 >>main() thrad checked out 签出 operation>> Fat>>id:15 checked in 释放:Fat>>id:17 11 >>main() thrad checked out 签出 operation>> Fat>>id:17 checked in 释放:Fat>>id:21 12 >>main() thrad checked out 签出 operation>> Fat>>id:21 checked in 释放:Fat>>id:19 13 >>main() thrad checked out 签出 operation>> Fat>>id:19 checked in 释放:Fat>>id:23 14 >>main() thrad checked out 签出 operation>> Fat>>id:23 checked in 释放:Fat>>id:8 checked in 释放:Fat>>id:6 15 >>main() thrad checked out 签出 operation>> Fat>>id:6 16 >>main() thrad checked out 签出 operation>> Fat>>id:8 checked in 释放:Fat>>id:10 17 >>main() thrad checked out 签出 checked in 释放:Fat>>id:14 checked in 释放:Fat>>id:16 checked in 释放:Fat>>id:18 checked in 释放:Fat>>id:20 checked in 释放:Fat>>id:22 checked in 释放:Fat>>id:12 operation>> Fat>>id:10 18 >>main() thrad checked out 签出 operation>> Fat>>id:12 19 >>main() thrad checked out 签出 operation>> Fat>>id:14 20 >>main() thrad checked out 签出 operation>> Fat>>id:16 21 >>main() thrad checked out 签出 operation>> Fat>>id:18 22 >>main() thrad checked out 签出 operation>> Fat>>id:20 23 >>main() thrad checked out 签出 operation>> Fat>>id:22 checked in 释放:Fat>>id:1 24 >>main() thrad checked out 签出 operation>> Fat>>id:1 任务是否完成:false checkOut() interrupted */

点击次数:9505
作者:
web前端行业资讯
Web new NewsList
英特尔宣布与法拉利跨界合作欲将AI技术用于赛车运动 ,,2018年01月11日甲骨文服务器出漏洞:攻击者用漏洞挖矿获取加密货币 ,,2018年01月11日用深度学习设计图像视频压缩算法:更简洁、更强大 ,,2018年01月11日Ubuntu内核和NVIDIA更新:修复Meltdown和Spectre两处漏洞 ,,2018年01月11日AntDesign3.1.1发布,阿里企业级UI设计语言 ,,2018年01月11日微信「跳一跳」带火小游戏,开发者如何快速上手? ,,2018年01月11日谷歌公布最新安卓系统份额:你用上奥利奥了么? ,,2018年01月11日腾讯开发出“3D音效”算法:普通耳机实现3D实时语音效果 ,,2018年01月11日谷歌工程师点赞中国程序员实现Node.js启动超4倍提速 ,,2018年01月11日三星电子总裁兼CE部门负责人金炫奭:万物互联时代到来 ,,2018年01月11日NVIDIA和大众合作建立智能驾驶助手 ,,2018年01月11日GIMPS项目报告发现已知最大素数 ,,2018年01月11日微软与生物技术公司开展AI驱动的血液检测同时诊断数十种疾病 ,,2018年01月11日微软跨平台移动开发工具套件HockeyApp宣布免费 ,,2018年01月11日《硅谷》里神乎其神的压缩技术,AI正在一点点做出来 ,,2018年01月11日LinuxMint19代号敲定为“Tara”预计2018年5月至6月期间发布 ,,2018年01月11日Facebook发布wav2letter工具包,用于端到端自动语音识别 ,,2018年01月11日开源数据库ArangoDB正进行约1156万美元股权融资 ,,2018年01月11日IntelCPU漏洞闹大:腾讯云紧急升级 ,,2018年01月11日2018年1月全球数据库排名:Redis夺回第八 ,,2018年01月11日Lyft将联手无人驾驶公司于CES上展示无人驾驶汽车 ,,2018年01月11日京东X无人超市首家社会门店开业:刷脸进、微信自动结算 ,,2018年01月11日担心被AI取代是杞人忧天?高晓松跨年演讲说的有几分对 ,,2018年01月11日免费授权技术许可Intel宣布在未来CPU中集成雷电3 ,,2018年01月11日算法决定你在社交媒体上看到的信息 ,,2018年01月11日谷歌安全博客披露“英特尔内核漏洞”更多细节 ,,2018年01月04日Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日OculusRiftDK2安装所需电脑配置 【编程语言】2015年03月20日PHP和Java集成开发详解分析强强联合2014年01月29日讲解ASP方面的知识比较全的asp学习教程2014年01月29日详细介绍8款超实用JavaScript框架2014年01月29日php从数组中随机抽取一些元素的代码2014年01月29日nosql-intro-original.pdf-MartinFowler(中文翻译) 【编程语言】2014年11月17日Spring(五)依赖注入原理及多种数据类型的装配【Web前端】2015年07月24日解决phpmyadmin导入大数据库出现一系列问题 【综合】2015年07月20日GBK编码【Web前端】2014年12月09日JavaScript继承详解(二) 【编程语言】2015年03月10日HowdoestheMETHOD_OPTparameterwork——Method_opt参数应用 【编程语言】2014年11月27日从一千万条短信中找出重复次数最多的前10条【移动开发】2015年08月05日【HiHoCoder】#1067:最近公共祖先·二 【编程语言】2015年03月26日mysql分区 【编程语言】2015年08月07日杭电HDU1247ACMHat’sWords(trie树或着STL) 【综合】2015年07月23日用原生JavaScript实现jQuery的$.getJSON的解决方法2014年01月29日前端笔试题笔记(回到顶部组件)2015年03月16日获取已安装应用在dataapp目录下的apk安装包,并分享 【编程语言】2015年05月15日关于后盾网yii框架的学习小结(8)--自定义前台的验证 【编程语言】2015年06月24日poj1328RadarInstallation 【编程语言】2015年02月09日java语言中的继承概述 【移动开发】2015年03月13日当黑客马拉松遇上全栈工程师 【云计算】2015年05月05日js给onclick事件赋值,动态传参数实例解说2014年01月29日设计模式之简单工厂工厂方法抽象工厂 【移动开发】2015年03月09日Yahoo的MySQL性能分析器详解 【架构设计】2015年05月27日音乐播放器--简单实现播放、暂停、随机播放、音乐进度条(第一版) 【移动开发】2015年04月24日PrototypeObject对象学习2014年01月29日Android开发工具之adt-bundle-windows【移动开发】2015年07月20日codeforces#8DTwoFriends二分答案+计算几何 【移动开发】2015年05月19日【Android】自定义带删除输入框 【编程语言】2015年07月22日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)