加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

让线程按顺序执行8种方法

发布时间:2019-09-06 10:07:08 所属栏目:建站 来源:俊俊的小熊饼干
导读:副标题#e# 一.前言 本文使用了8种方法实现在多线程中让线程按顺序运行的方法,涉及到多线程中许多常用的方法,不止为了知道如何让线程按顺序运行,更是让读者对多线程的使用有更深刻的了解。使用的方法如下: [1] 使用线程的join方法[ 2] 使用主线程的join方

运行结果

  1. 早上: 
  2.  
  3. 产品经理来上班了 
  4.  
  5. 测试人员来上班了 
  6.  
  7. 开发人员来上班了 
  8.  
  9. 领导吩咐: 
  10.  
  11. 首先,产品经理规划新需求… 
  12.  
  13. 然后,开发人员开发新需求功能… 
  14.  
  15. 最后,测试人员测试新功能… 
  16.  
  17. 产品经理规划新需求 
  18.  
  19. 开发人员开发新需求功能 
  20.  
  21. 测试人员测试新功能 

7.使用CyclicBarrier(回环栅栏)实现线程按顺序运行

CyclicBarrier(回环栅栏):通过它可以实现让一组线程等待至某个状态之后再全部同时执行。叫做回环是因为当所有等待线程都被释放以后,CyclicBarrier可以被重用。我们暂且把这个状态就叫做barrier,当调用await()方法之后,线程就处于barrier了。

应用场景:公司组织春游,等待所有的员工到达集合地点才能出发,每个人到达后进入barrier状态。都到达后,唤起大家一起出发去旅行。

让线程按顺序执行8种方法
让线程按顺序执行8种方法

运行结果

  1. 早上: 
  2.  
  3. 产品经理来上班了 
  4.  
  5. 测试人员来上班了 
  6.  
  7. 开发人员来上班了 
  8.  
  9. 领导吩咐: 
  10.  
  11. 首先,产品经理规划新需求… 
  12.  
  13. 然后,开发人员开发新需求功能… 
  14.  
  15. 最后,测试人员测试新功能… 
  16.  
  17. 产品经理规划新需求 
  18.  
  19. 开发人员开发新需求功能 
  20.  
  21. 测试人员测试新功能 

8.使用Sephmore(信号量)实现线程按顺序运行

Sephmore(信号量):Semaphore是一个计数信号量,从概念上将,Semaphore包含一组许可证,如果有需要的话,每个acquire()方法都会阻塞,直到获取一个可用的许可证,每个release()方法都会释放持有许可证的线程,并且归还Semaphore一个可用的许可证。然而,实际上并没有真实的许可证对象供线程使用,Semaphore只是对可用的数量进行管理维护。

acquire():当前线程尝试去阻塞的获取1个许可证,此过程是阻塞的,当前线程获取了1个可用的许可证,则会停止等待,继续执行。

release():当前线程释放1个可用的许可证。

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读