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次执行!


Java 多线程编程之八:多线程的调度

本博客是“Java 多线程编程”系列的后续篇。“Java 多线程编程”系列其他博客请参阅本博客结尾部分。         有多个线程,如何控制它们执行的先后次序?         方法一:设置线程优先...
  • defonds
  • defonds
  • 2013年03月12日 18:08
  • 12241

Java多线程的调度策略

在Java多线程环境中,为保证所有线程的执行能按照一定的规则执行,JVM实现了一个线程调度器,它定义了线程调度的策略,对于CPU运算的分配都进行了规定,按照这些特定的机制为多个线程分配CPU的使用权。...
  • wangyangzhizhou
  • wangyangzhizhou
  • 2014年11月14日 20:22
  • 8701

java中基于线程池的任务调度设计

基于Timer类的设计缺陷,java5中引入的ScheduledExecutor线程池设计。其设计思想是,每一个被调度的任务都会由线程池中一个线程去执行,因此任务是并发执行的,相互之间不会受到干扰。需...
  • hehexiaoyou
  • hehexiaoyou
  • 2014年04月11日 10:45
  • 2665

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

多线程计算数据,然后合并数据
  • jiangfullll
  • jiangfullll
  • 2014年09月22日 19:19
  • 3197

Java线程模型与线程调度

线程模型:     Sun JDK的windows版和Linux版都是使用1对1的线程模型实现的,一条Java线程映射到一条轻量级进程之中。     内核线程(Kernel-Level Threa...
  • u011299745
  • u011299745
  • 2016年10月29日 15:15
  • 482

Java多线程调度方法

多线程
  • fumier
  • fumier
  • 2015年03月19日 20:41
  • 800

一篇博文彻底了解线程的调度策略

线程的调度策略 在java的线程开发中,线程的调度策略是一个很重要的知识点,起承上启下的作用,所以我们下面去一起看看系统是怎么安排线程之间的运行规则的。 线程调度的目的 首先我们要知道,...
  • farley119
  • farley119
  • 2016年12月04日 22:19
  • 1437

13.《深入理解Java虚拟机》Java与线程

Java与线程在Java里面的并发大多与多线程脱离不了关系;线程的实现我们知道,线程是比进程更加轻量级的调度执行单位。各个线程可以共享进程资源,又可以独立调度。在Java的Thread类中,我们观察源...
  • u010853261
  • u010853261
  • 2017年01月04日 11:33
  • 698

计算机线程及任务调度

什么是线程 什么是线程?线程与进程与有什么关系?这是一个非常抽象的问题,也是一个特别广的话题,涉及到非常多的知识。我不能确保能把它讲的话,也不能确保讲的内容全部都正确。即使这样,我也希望尽可能地把他...
  • moxi_wang
  • moxi_wang
  • 2015年07月03日 19:57
  • 1193

python中多线程调度机制以及GIL

总结下python中线程调度机制. 对于线程调度机制而言,同操作系统的进程调度一样,最关键是要解决两个问题: 1.在何时选择挂起当前线程,并选择处于等待的先一个线程呢? 2.在众多等待的线程中,选...
  • q454684431
  • q454684431
  • 2014年05月27日 20:39
  • 2669
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java多线程-线程的调度(合并)
举报原因:
原因补充:

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