【第22期】观点:IT 行业加班,到底有没有价值?

Java多线程-线程的调度(合并)

转载 2013年12月02日 14:46:38

线程的合并的含义就是将几个并行线程的线程合并为一个单线程执行,应用场景是当一个线程必须等待另一个线程执行完毕才能执行时可以使用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次执行!


举报

相关文章推荐

线程学习之-合并线程

线程中join方法的意思是把指定的线程加入到当前线程, 即将两个交替执行的线程合并为顺序执行的线程. 比如在线程B中, 线程A调用了join()方法, 意思是说直到线程A执行完毕后, 才会继续执行线程...

线程的合并

Join 方法用于把两个并行执行的线程合并为一个单个的线 程。如果一个线程t1在执行的过程中需要等待另一个线程t2结 束后才能继续执行,可以在t1 的程序模块中调用t2 的join()方 法。例...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

java多线程-合并

java多线程-合并 线程合并的意义就是几个并行的线程合并为一个单线程执行,应用于一个线程必须等待另个线程执行完毕后执行 例题:现有一个主线程,T1,T2怎么让T2在T1之后执行,主线程在T2之后...

多线程计算数据,然后合并数据

多线程计算数据,然后合并数据

线程的调度-合并

线程的合并的含义:将各个并行的线程合并为一个单线程; 应用场景:当一个线程必须等待另一个线程执行完毕才能执行时,使用join方法; package test; public class Test...

线程的合并和后台线程

线程的合并 python的Thread类中还提供了join()方法,使得一个线程可以等待另一个线程执行结束后再继续运行。这个方法还可以设定一个timeout参数,避免无休止的等待。因为两个线程顺...

合并子线程

package com.cavaness.quartzbook.chapter3; public class Test { public static void main(String[] arg...

Java线程(四):线程中断、线程让步、线程睡眠、线程合并

最近在Review线程专栏,修改了诸多之前描述不够严谨的地方,凡是带有Review标记的文章都是修改过了。本篇文章是插进来的,因为原来没有写,现在来看传统线程描述的不太完整,所以就补上了。理解了线程同...
  • ghsau
  • ghsau
  • 2013-12-26 20:29
  • 26095

新浪面试题-多线程合并文件

今日我收到了一封来自新浪面试的面试邮件,里面就有一道面试题。就是要求多线程合并一个文件,写我整整两天的时间搞定这个题目,给大家分享一下,看代码。主程序package com.huang;import ...

java--多线程调度与控制1

★ Java的多线程是抢占式的运行方式–setPriority()public class myThread extends Thread{ private int first; pu...
  • xanlv
  • xanlv
  • 2016-08-07 23:00
  • 240
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)