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

免费的企业网站asp网站和php网站

免费的企业网站,asp网站和php网站,做外贸网站要花多少钱,全国最新网站备案查询CyclicBarrier、CountDownLatch、Semaphore 的用法 CountDownLatch#xff08;线程计数器 #xff09; CountDownLatch 类位于 java.util.concurrent 包下#xff0c;利用它可以实现类似计数器的功能。比如有一个任务 A#xff0c;它要等待其他 4 个任务执行完毕之后才能执…CyclicBarrier、CountDownLatch、Semaphore 的用法 CountDownLatch线程计数器 CountDownLatch 类位于 java.util.concurrent 包下利用它可以实现类似计数器的功能。比如有一个任务 A它要等待其他 4 个任务执行完毕之后才能执行此时就可以利用 CountDownLatch来实现这种功能了。 final CountDownLatch latch new CountDownLatch(2); new Thread() {public void run() {System.out.println(子线程 Thread.currentThread().getName() 正在执行);Thread.sleep(3000);System.out.println(子线程 Thread.currentThread().getName() 执行完毕);latch.countDown();}; }.start();new Thread() {public void run() {System.out.println(子线程 Thread.currentThread().getName() 正在执行);Thread.sleep(3000);System.out.println(子线程 Thread.currentThread().getName() 执行完毕);latch.countDown();}; }.start();System.out.println(等待 2 个子线程执行完毕...);latch.await();System.out.println(2 个子线程已经执行完毕);System.out.println(继续执行主线程);CyclicBarrier回环栅栏-等待至 barrier 状态再全部同时执行 字面意思回环栅栏通过它可以实现让一组线程等待至某个状态之后再全部同时执行。叫做回环是因为当所有等待线程都被释放以后CyclicBarrier 可以被重用。我们暂且把这个状态就叫做barrier当调用 await()方法之后线程就处于 barrier 了。 CyclicBarrier 中最重要的方法就是 await 方法它有 2 个重载版本 public int await()用来挂起当前线程直至所有线程都到达 barrier 状态再同时执行后续任务 public int await(long timeout, TimeUnit unit)让这些线程等待至一定的时间如果还有线程没有到达 barrier 状态就直接让到达 barrier 的线程执行后续任务。 具体使用如下另外 CyclicBarrier 是可以重用的。 public static void main (String[]args){int N 4;CyclicBarrier barrier new CyclicBarrier(N);for (int i 0; i N; i)new Writer(barrier).start();}static class Writer extends Thread {private CyclicBarrier cyclicBarrier;public Writer(CyclicBarrier cyclicBarrier) {this.cyclicBarrier cyclicBarrier;}Overridepublic void run() {try {Thread.sleep(5000); //以睡眠来模拟线程需要预定写入数据操作System.out.println(线程 Thread.currentThread().getName() 写入数据完毕等待其他线程写入完毕);cyclicBarrier.await();} catch (InterruptedException e) {e.printStackTrace();} catch (BrokenBarrierException e) {e.printStackTrace();}System.out.println(所有线程写入完毕继续处理其他任务比如数据操作);}}Semaphore信号量-控制同时访问的线程个数 Semaphore 翻译成字面意思为 信号量Semaphore 可以控制同时访问的线程个数通过acquire() 获取一个许可如果没有就等待而 release() 释放一个许可。 Semaphore 类中比较重要的几个方法 public void acquire(): 用来获取一个许可若无许可能够获得则会一直等待直到获得许可。 public void acquire(int permits):获取 permits 个许可 public void release() { } :释放许可。注意在释放许可之前必须先获获得许可。 public void release(int permits) { }:释放 permits 个许可 上面 4 个方法都会被阻塞如果想立即得到执行结果可以使用下面几个方法 public boolean tryAcquire():尝试获取一个许可若获取成功则立即返回 true若获取失败则立即返回 false public boolean tryAcquire(long timeout, TimeUnit unit):尝试获取一个许可若在指定的时间内获取成功则立即返回 true否则则立即返回 false public boolean tryAcquire(int permits):尝试获取 permits 个许可若获取成功则立即返回 true若获取失败则立即返回 false public boolean tryAcquire(int permits, long timeout, TimeUnit unit): 尝试获取 permits个许可若在指定的时间内获取成功则立即返回 true否则则立即返回 false 还可以通过 availablePermits()方法得到可用的许可数目。 例子若一个工厂有 5 台机器但是有 8 个工人一台机器同时只能被一个工人使用只有使用完了其他工人才能继续使用。那么我们就可以通过 Semaphore 来实现 int N 8; //工人数Semaphore semaphore new Semaphore(5); //机器数目for(int i0;iN;i)new Worker(i,semaphore).start();} static class Worker extends Thread {private int num;private Semaphore semaphore;public Worker(int num, Semaphore semaphore) {this.num num;this.semaphore semaphore;}Overridepublic void run() {try {semaphore.acquire();System.out.println(工人 this.num 占用一个机器在生产...);Thread.sleep(2000);System.out.println(工人 this.num 释放出机器);semaphore.release();} catch (InterruptedException e) {e.printStackTrace();}} } „ CountDownLatch 和 CyclicBarrier 都能够实现线程之间的等待只不过它们侧重点不同CountDownLatch 一般用于某个线程 A 等待若干个其他线程执行完任务之后它才执行而 CyclicBarrier 一般用于一组线程互相等待至某个状态然后这一组线程再同时执行另外CountDownLatch 是不能够重用的而 CyclicBarrier 是可以重用的。„ Semaphore 其实和锁有点类似它一般用于控制对某组资源的访问权限。
http://www.zqtcl.cn/news/378607/

相关文章:

  • 威海 医院网站建设宝安专业网站设计公司
  • 营销企业网站建设步骤建筑 企业官网设计
  • 网站建设的内容网站怎么做视频的软件
  • 大型网站多少钱企业咨询管理是干嘛的
  • 陕西建设银行网站小企业网站建设公司
  • linux下网站开发计算机网络技术专业主要学什么
  • 长沙网站维护公司建个门户网站
  • 做采集网站难不做科技的网站
  • 中小微企业服务平台seo怎么提升关键词的排名
  • 优秀企业网站欣赏店名设计wordpress文章列表添加字段
  • 有哪些做软件的网站服务器安装WordPress没有权限访问
  • app开发和网站开发公司网站怎么做百度竞价
  • 医疗机构网站备案网站建设面试常见问题
  • 建设网银登录网站国内欣赏电商设计的网站
  • 自适应网站优点缺点网站上的在线答题是怎么做的
  • 查询单位信息的网站免费学编程的网站有哪些
  • 建设企业网站进去无法显示wordpress 在线课程
  • 博客型网站建设广州网站建设如何做
  • 网站导航栏全屏怎么做万年网站建设
  • flash源码网站百度关键词价格
  • 个人网站如何发布怎么做记步数的程序到网站
  • 石家庄网站制作公司排名前十可视化网站开发工具有哪些
  • 网站个人博客怎么做杭州网站改版公司电话
  • 烟台北京网站建设公司中国建筑信息资讯网
  • 硬盘做网站空间高端网站设计杭州
  • 南昌网站建设方案网站建设需求分析班级
  • 汉阳做网站关键词站长工具
  • 做海报图片的网站营销软件
  • 能先做网站再绑定域名吗石家庄公司建设网站
  • 设计网站的收费图是怎么做的公司网站简介怎么做