当前位置: 首页 > news >正文

做网站去哪里做万能证件p图

做网站去哪里做,万能证件p图,只做公司网站方案,网站建设整改落实情况声明#xff1a;本文是《 Java 7 Concurrency Cookbook》的第三章#xff0c; 作者#xff1a; Javier Fernndez Gonzlez 译者#xff1a;郑玉婷控制并发访问多个资源在并发访问资源的控制中#xff0c;你学习了信号量(semaphores)的基本知识。在上个指南#xff0c;你实…声明本文是《 Java 7 Concurrency Cookbook》的第三章 作者 Javier Fernández González 译者郑玉婷控制并发访问多个资源在并发访问资源的控制中你学习了信号量(semaphores)的基本知识。在上个指南你实现了使用binary semaphores的例子。那种semaphores是用来保护访问一个共享资源的或者说一个代码片段每次只能被一个线程执行。但是semaphores也可以用来保护多个资源的副本也就是说当你有一个代码片段每次可以被多个线程执行。在这个指南中你将学习怎样使用semaphore来保护多个资源副本。你将实现的例子会有一个print queue但可以在3个不同的打印机上打印文件。准备指南中的例子是使用 Eclipse IDE 来实现的。如果你使用Eclipse 或者其他的IDE例如NetBeans, 打开并创建一个新的java任务。实现在控制并发访问资源里描述的例子。怎么做呢…按照这些步骤来实现下面的例子//1. 如我们之前提到的你将实现semaphores来修改print queue例子。打开PrintQueue类并声明一个boolean array名为 freePrinters。这个array储存空闲的等待打印任务的和正在打印文档的printers。private boolean freePrinters[];//2. 接着声明一个名为lockPrinters的Lock对象。将要使用这个对象来保护freePrinters array的访问。private Lock lockPrinters;//3. 修改类的构造函数并初始化新声明的对象们。freePrinters array 有3个元素全部初始为真值。semaphore用3作为它的初始值。public PrintQueue(){semaphorenew Semaphore(3);freePrintersnew boolean[3];for (int i0; i3; i){freePrinters[i]true;}lockPrintersnew ReentrantLock();}//4. 修改printJob()方法。它接收一个称为document的对象最为唯一参数。public void printJob (Object document){//5. 首先调用acquire()方法获得semaphore的访问。由于此方法会抛出 InterruptedException异常所以必须加入处理它的代码。try {semaphore.acquire();//6. 接着使用私有方法 getPrinter()来获得被安排打印任务的打印机的号码。int assignedPrintergetPrinter();//7.然后 随机等待一段时间来实现模拟打印文档的行。long duration(long)(Math.random()*10);System.out.printf(%s: PrintQueue: Printing a Job in Printer%d during %d seconds\n,Thread.currentThread().getName(), assignedPrinter,duration);TimeUnit.SECONDS.sleep(duration);//8. 最后调用release() 方法来解放semaphore并标记打印机为空闲通过在对应的freePrinters array引索内分配真值。freePrinters[assignedPrinter]true;} catch (InterruptedException e) {e.printStackTrace();} finally {semaphore.release();}//9. 实现 getPrinter() 方法。它是一个私有方法返回一个int值并不接收任何参数。private int getPrinter() {//10. 首先声明一个int变量来保存printer的引索值。int ret-1;//11. 然后 获得lockPrinters对象 object的访问。try {lockPrinters.lock();//12. 然后在freePrinters array内找到第一个真值并在一个变量中保存这个引索值。修改值为false因为等会这个打印机就会被使用。for (int i0; iif (freePrinters[i]){reti;freePrinters[i]false;break;}}//13. 最后解放lockPrinters对象并返回引索对象为真值。} catch (Exception e) {e.printStackTrace();} finally {lockPrinters.unlock();}return ret;//14. Job 和 Core 类不做任何改变。它是怎么工作的…在例子中的PrintQueue类的关键是Semaphore对象创建的构造方法是使用3作为参数的。这个例子中前3个调用acquire() 方法的线程会获得临界区的访问权其余的都会被阻塞 。当一个线程结束临界区的访问并解放semaphore时另外的线程才可能获得访问权。在这个临界区线程获得被分配打印的打印机的引索值。例子的这部分让例子更真实而且它没有使用任何与semaphores相关的代码。以下的裁图展示了这个例子的执行输出每个文档都被安排到第一个空闲的打印机打印。更多…The acquire(), acquireUninterruptibly(), tryAcquire(),和release()方法有一个外加的包含一个int参数的版本。这个参数表示 线程想要获取或者释放semaphore的许可数。也可以这样说这个线程想要删除或者添加到semaphore的内部计数器的单位数量。在这个例子中acquire(), acquireUninterruptibly(), 和tryAcquire() 方法, 如果计数器的值小于许可值那么线程就会被阻塞直到计数器到达或者大于许可值。参见
http://www.zqtcl.cn/news/750747/

相关文章:

  • 杭州网站 建设广州金将令做网站怎么样
  • 苏州科建设交通学院网站地方网站类型
  • 怎样做投资理财网站城乡建设部网站第35号令
  • 南昌集团网站建设wordpress去掉rss订阅
  • 郑州做网站的外包公司有哪些宁波 电商平台网站建设
  • 网站平台开发多少钱wordpress文章展示
  • 汕尾市企业网站seo点击软件建设一个网站的步骤有哪些
  • 备案上个人网站和企业网站的区别实名认证域名可以做电影网站吗
  • 顾氏网站建设有限公司怎么样memcache安装wordpress
  • 邯郸网站建设渠道免费做全网解析电影网站赚钱
  • 中铁中基建设集团网站东莞网络优化哪家公司好
  • wordpress免费建站合肥关键词网站排名
  • 中铁建设集团门户网登录网站自己可以建设环保公益网站吗
  • 国内电子商务网站有哪些网站升级中html
  • 影响网站加载速度顺德做网站那家好
  • 如何备份网站的百度怎样建立网站
  • 如何建立网站视频教程湖北seo关键词排名优化软件
  • 南宁网站建设推荐q479185700顶上新公司网站建设流程
  • 石家庄城乡建设局网站四川网络营销
  • 网站更换名称需要重新备案吗赣州章贡区二手房出售信息
  • 浙江恒元建设网站wordpress 主题 英文
  • 甘肃网站建设推广做暧昧免费视频大全网站
  • 科技公司网站系统个人网站模板大全
  • 建网站源码建站详解做加油机公司网站
  • 北海做网站有哪家网站布局策划案
  • 做app网站的软件有哪些内容吗本地网站建设公司
  • 做服装团购有哪些网站有哪些网页端二维码在哪里
  • 石材网站建设方案科室建设网站
  • 梧州住房和建设局网站网站目录文件
  • 有没有做生鲜配送的网站wordpress调用摘要