现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?...
Thread t1 = new Thread(new T1());
Thread t2 = new Thread(new T2());
Thread t3 = new Thread(new T3());
t1.start();
t1.join();
t2.start();
t2.join();
t3.start();
t3.join();
主要是使用了join()方法
看看jdk的join方法是如何实现的吧
1 public final synchronized void join(long millis) 2 throws InterruptedException { 3 long base = System.currentTimeMillis(); 4 long now = 0; 5 6 if (millis < 0) { 7 throw new IllegalArgumentException("timeout value is negative"); 8 } 9 10 if (millis == 0) { 11 while (isAlive()) { 12 wait(0); 13 } 14 } else { 15 while (isAlive()) { 16 long delay = millis - now; 17 if (delay <= 0) { 18 break; 19 } 20 wait(delay); 21 now = System.currentTimeMillis() - base; 22 } 23 } 24 }
View Code
转载于:https://www.cnblogs.com/v-lcc/p/9763827.html
现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?...相关推荐
- java三个线程 顺序执行_如何确保三个线程顺序执行
三个线程t1.t2.t3.确保三个线程,t1执行完后t2执行,t2执行完后t3执行. 一.使用join thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程. ...
- 有三个线程T1,T2,T3,下面方法可以确保它们按顺序执行的有()该线程继续执行
1.先启动最后一个(T3调用T2,T2调用T1) package com.te;public class Testt {static Testt t=new Testt();class T1 exte ...
- 三个线程依次顺序执行
保证三个线程依次按顺序执行 在有一些需求的情况下,我们需要三个线程依次按顺序执行,那么有人就会问了,为什么不把三个线程的run方法依次放到三个方法体中,然后依次执行,按顺序调用三个方法体,这样不是同样 ...
- 【Java面试高频-多线程】- 三个线程分别负责打印A,B和C,循环100次
(2)面试真题-三个线程分别负责打印A,B和C,循环100次 a.ReentrantLock和Condition来完成这项工作 package com.lcz.thread; // 三个线程 // 匿 ...
- 十二个任务 分给三个线程处理
2019独角兽企业重金招聘Python工程师标准>>> package day02; //实现手动分配 public class H { private Thread t1; ...
- 多线程:保证三个线程依次按顺序执行?newSingleThreadExecutor!!!
newSingleThreadExecutor 这个线程池,保证线程里面的任务依次执行,这让我发现了新大陆, 立马实践了一下,发现不负所望: public class TestJoin {public ...
- 如何实现ABC三个线程按顺序执行十次
题目要求:创建三个线程,每个线程分别打印ABC,并按照ABC的顺序执行十次 题目可以使用多种不同的方式解决,下面我们分别使用 Condition 等待唤醒机制.Semaphore 信号量.CountD ...
- C++多线程并发(三)---线程同步之条件变量
文章目录 一.何为条件变量 二.为何引入条件变量 三.如何使用条件变量 更多文章: 一.何为条件变量 在前一篇文章<C++多线程并发(二)-线程同步之互斥锁>中解释了线程同步的原理和实现, ...
- C++多线程学习(三)——线程同步之条件变量
前面学习了互斥量似乎我们就可以多线程编程了,多线程也不过如此嘛.然而我们上手coding,用多线程来结局我们实际需求就会发现,似乎多线程也不是很好用.因为我们实际对于多线程的需求,往往线程都是whil ...
最新文章
- 关于60枚一分两分五分硬币凑成一块钱的解决方法
- 解决bash: mysql: command not found 的方法
- mysql之触发器详解_学习笔记之MySQL触发器详解
- CTR预估中GBDT与LR融合方案
- 如何使用 Barracuda 防火墙设置/保护 Azure 应用程序
- 清华大学计算机组成与体系结构,清华大学出版社-图书详情-《计算机组成与体系结构(第2版)》...
- java 操作db2_java操作DB2,增删改查
- flowable DMN部署单独使用_06
- VC实现在ListBox中选择背景位图
- python--继承
- 【编译原理笔记05】语法分析:FIRST集和FOLLOW集的计算,[非]递归的预测分析法,预测分析中的错误处理
- 中国一共有多少个神仙?
- php市场占比 2019,2019年家电市场份额占比排名
- 计算机word论文,怎么用电脑Word写论文?
- mongodb数据库自动备份
- 是否真的输在起跑线上?
- 将两个数组中的数进行交换
- GANSS ALT71D键盘使用说明
- apache安装过程
- 解决vue-router报NavigationDuplicated: Avoided redundant navigation to current location: “/login“ 的问题