题目描述:

目前有三个线程t1,t2,t3,,线程分别打印1,2,3,,让我们如何控制线程的同步访问,使得线程依次输出123123123123…的结果。

解题思路:

使用最简便最实用的信号量Semaphore,通过控制信号的获取以及释放,承接获取锁来实现线程得顺序执行以及临界资源的同步访问。

代码如下:

package 比较器java特性;import java.util.concurrent.Semaphore;
public class SemaphoreT123 {public static void main(String[] args) {Print123Semaphore ps = new Print123Semaphore();// Lambda表达式来新建线程以及开启new Thread(()->ps.Print1()).start();new Thread(()->ps.Print2()).start();new Thread(()->ps.Print3()).start();}}class Print123Semaphore{private Semaphore  s1=new Semaphore(1);private Semaphore s2=new Semaphore(0);private Semaphore s3=new Semaphore(0);// 生成顺序public void Print1(){print("1",s1,s2);}public void Print2() {print("2",s2,s3);}public void Print3() {print("3",s3,s1);}// 首尾承接public void print(String name,Semaphore start,Semaphore end){for(int i=0;i<10;i++) {try {start.acquire();System.out.print(name);end.release();} catch (InterruptedException e) {e.printStackTrace();}}}}

喜欢的记得点赞关注我哦!

三个线程顺序执行依次输出123123123.....相关推荐

  1. java三个线程 顺序执行_如何确保三个线程顺序执行

    三个线程t1.t2.t3.确保三个线程,t1执行完后t2执行,t2执行完后t3执行. 一.使用join thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程. ...

  2. 多个for语句嵌套执行顺序_阿里真实面试题解析之实现多个线程顺序执行的几种方式...

    前几天有一位同事在阿里一面的时候被问到这么一个多线程问题:如何保证多个线程的顺序执行.当时他没有回答上来,所以为了避免大家以后遇到同样的面试题还是回答不上来,今天我们就来分析解答下这个问题. 问题缘由 ...

  3. 面试官:线程顺序执行,这么多答案你都答不上来?

    前言:最近在面试过程中,发现一些面高程的朋友连怎么实现线程顺序执行都答不上来,特分享相关文章,以作科普,有收获帮忙点个在看,感谢,助中秋快乐! 一.实现 本文使用了8种方法实现在多线程中让线程按顺序运 ...

  4. python 等待其他线程执行完_面试官:如何让线程顺序执行,join,还有其他办法吗?...

    面试官:如让线程顺序执行? 我:使用Thread的join方法. 面试官:除了join还有别的办法吗? 我:目前只用过join. 面试官:哦,那你了解CountDownLatch吗? 我:不了解,没使 ...

  5. java 多线程输出_[Java多线程]ABC三个线程顺序输出的问题

    大概的问题是这样的: 有A,B,C三个线程, A线程输出A, B线程输出B, C线程输出C 要求, 同时启动三个线程, 按顺序输出ABC, 循环10次 这是一个多线程协同的问题, 本身多线程是没有执行 ...

  6. 三个线程轮流执行顺序打印ABC

    方法1:使用boolean标记 package com.ziyear.exam;/*** 3个线程,顺序打印ABC10次*/ public class PrintThread_ABC_10_1 {/* ...

  7. 线程安全(二)Lock 什么是Lock线程锁?与synchronized区别在哪?Lock锁是如何实现等待通知的?如何实现线程顺序执行?

    文章目录 前言 一.synchronized的缺陷 二.Lock接口的特性及基本方法 接口的特性 接口基本的方法: 三.ReentrantLock介绍及实例 ReentrantLock类常见方法: l ...

  8. Future获取线程返回值能使线程顺序执行?

    2019独角兽企业重金招聘Python工程师标准>>> 线程非安全的方法getNext() import net.jcip.annotations.NotThreadSafe;@No ...

  9. jmeter 线程执行顺序_面试官让我说出8种线程顺序执行的方法!我懵了

    https://www.cnblogs.com/wenjunwei/p/10573289.html 一.前言 本文使用了8种方法实现在多线程中让线程按顺序运行的方法,涉及到多线程中许多常用的方法,不止 ...

  10. 设置三个线程顺序打印数字问题(转载)

    第一种方法:通过共享对象锁的方式实现 记住调用wait方法时候需要在同步代码块内,否则会报java.lang.IllegalMonitorStateException异常! package com.t ...

最新文章

  1. dio网络框架封装_Flutter 使用dio来发起网络请求以及Cookie管理
  2. 【Android】Context
  3. QT Linux打包发布
  4. WebLogic在Linux环境下安装
  5. cmake笔记(1)
  6. 单麦克纳姆轮的速度分解
  7. 最长回文子串(Longest Palindromic Substring)-DP问题
  8. python停用词表整理_python停用词表
  9. 使用WEPE一键安装系统
  10. 主页被强制绑定为360导航
  11. python递归输出斐波那契数列_艾艾精工涨停
  12. jsonDB使用手冊
  13. Java程序设计 北京大学 2019冬期末测验
  14. R语言——单位根检验/平稳性检验
  15. Youtube 评论数
  16. Sequoia(基于JDBC的数据库集群中间件)用户手册
  17. 从两家主流报表工具的报jia看报表行业的报jia水深-----常用报表工具对比---主流报表对比
  18. 激战和ErgoDex DX1
  19. Webpack神坑之imports-loader
  20. 把ElasticSearch当成是NoSQL数据库

热门文章

  1. 将VMware与SoftICE基于网络的远程调试功能相结合
  2. Spire.Office for .NET 7.4.10 is released
  3. 台式机计算机上的无线开关,台式机无线网络开关在哪
  4. 内置函数--inline
  5. 【二】网络空间安全综述
  6. 74HC595芯片组成测试工具_流水灯
  7. 采购员小刘与费用报销的“相爱相杀”史
  8. 键盘上F1到F12按钮各自的功能定位_-Chaz-_新浪博客
  9. 我对“渗透性测试”的理解
  10. 如何将Excel数据转化成树状结构