Java多线程-线程的调度(合并)
来源:互联网 发布:kaze算法 编辑:程序博客网 时间:2024/06/02 20:08
线程的合并的含义就是将几个并行线程的线程合并为一个单线程执行,应用场景是当一个线程必须等待另一个线程执行完毕才能执行时可以使用join方法。
join为非静态方法,定义如下:
void join(): 等待该线程终止。
void join(long millis): 等待该线程终止的时间最长为 millis 毫秒。
void join(long millis, int nanos): 等待该线程终止的时间最长为 millis 毫秒 + nanos 纳
package thread;public class ThreadJoin {public static void main(String[] args) {ThreadJoin join = new ThreadJoin();Thread t1 = join.new MyThread1();t1.start();for (int i = 0; i < 20; i++) {System.out.println(">>>>主线程第" + i + "次执行!");if (i > 2) {try {// t1线程合并到主线程中,主线程停止执行过程,转而执行t1线程,直到t1执行完毕后继续。t1.join();if(i < 4){System.out.println("t1 join完成.... 开始执行....");}//t1.join(10000);} catch (InterruptedException e) {e.printStackTrace();}}}}class MyThread1 extends Thread {public void run() {for (int i = 0; i < 10; i++) {System.out.println("----线程1第" + i + "次执行!");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}}}
运行结果:
>>>>主线程第0次执行!----线程1第0次执行!>>>>主线程第1次执行!>>>>主线程第2次执行!>>>>主线程第3次执行!----线程1第1次执行!----线程1第2次执行!----线程1第3次执行!----线程1第4次执行!----线程1第5次执行!----线程1第6次执行!----线程1第7次执行!----线程1第8次执行!----线程1第9次执行!t1 join完成.... 开始执行....>>>>主线程第4次执行!>>>>主线程第5次执行!>>>>主线程第6次执行!>>>>主线程第7次执行!>>>>主线程第8次执行!>>>>主线程第9次执行!>>>>主线程第10次执行!>>>>主线程第11次执行!>>>>主线程第12次执行!>>>>主线程第13次执行!>>>>主线程第14次执行!>>>>主线程第15次执行!>>>>主线程第16次执行!>>>>主线程第17次执行!>>>>主线程第18次执行!>>>>主线程第19次执行!
- Java多线程-线程的调度(合并)
- java多线程:线程的调度-合并
- Java多线程 -- 线程的调度-合并
- Java线程:线程的调度-合并
- Java线程:线程的调度-合并
- Java线程:线程的调度-合并
- Java线程:线程的调度-合并
- Java线程:线程的调度-合并
- Java线程:线程的调度-合并
- Java线程:线程的调度-合并
- Java线程:线程的调度-合并
- Java线程:线程的调度-合并
- Java线程:线程的调度-合并
- Java线程:线程的调度-合并
- Java线程:线程的调度-合并
- Java线程:线程的调度-合并
- Java线程:线程的调度-合并
- Java线程-10:线程的调度-合并
- 监控当前数据库的活动session
- 嵌入式 makefile的+=
- 使用TOAD 导出一个数据库 和 导入一个数据库
- 嵌入式 Ubuntu下如何建立gcc和g++编译环境
- 嵌入式 vlc源码分析锦集一
- Java多线程-线程的调度(合并)
- 嵌入式 vlc源码分析锦集二
- Android代码混淆(第三方jar的混淆)
- 嵌入式 IP数据报的TS、ES、PS流
- 嵌入式 rtp、rtsp、trcp的区别
- ruby学习笔记之数组学习(一)
- 嵌入式 交换机与路由器的广播包
- 个人生活 MT917收集刷机
- 个人生活 MT917手机4.0.4正式版本系统获得root