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多线程-线程的调度(让步)

线程的让步含义就是使当前运行着线程让出CPU资源,但是扔给谁不知道,仅仅是让出,线程状态回到可运行状态。 线程的让步使用Thread.yield()方法,yield()为静态方法,功能是暂停当前...

Java多线程3—线程的调度和runnable接口优点

Java运行时系统实现了一个用于调度线程执行的线程调度器,用于确定某一时刻由哪一个线程在CPU上运行。在java技术中,线程通常是抢占式的而不需要时间片分配进程(分配给每个线程相等的CPU时间的进程)...

java多线程基础(1)-由调度方式引入线程各种运行状态

线程的调度方式 所有java虚拟机都有一个线程调度器,用来确定哪个时刻运行哪个线程。   它主要包含2种调度器:抢占式(preemptive)和协作式(cooperative).           ...

Java多线程-线程的调度(优先级)

与线程休眠类似,线程的优先级仍然无法保障线程的执行次序。只不过,优先级高的线程获取CPU资源的概率较大,优先级低的并非没机会执行。 线程的优先级用1-10之间的整数表示,数值越大优先级越高,默认...

Java多线程3—线程的调度和runnable接口优点

Java运行时系统实现了一个用于调度线程执行的线程调度器,用于确定某一时刻由哪一个线程在CPU上运行。在java技术中,线程通常是抢占式的而不需要时间片分配进程(分配给每个线程相等的CPU时间的进程)...

Java多线程-线程的调度(守护线程)

Java多线程-线程的调度(守护线程) 估计学过Unix开发但是没有细致学习Java的同学们会疑惑了,操作系统里面是没有所谓的守护线程的概念,只有守护进程一说,但是Java语言机制是...

Java多线程-线程的调度(守护线程)

守护线程与普通线程写法上基本没啥区别,调用线程对象的方法setDaemon(true),则可以将其设置为守护线程。 守护线程使用的情况较少,但并非无用,举例来说,JVM的垃圾回收、内存管理等线程...

(45)Java学习笔记——多线程 / 设置线程 / 线程调度 /线程控制

多线程 并行与并发 并行:逻辑上同时发生,指在某一个时间内同时运行多个程序。 并发:物理上同时发生,指在某一个时间点同时运行多个程序。 java可以通过两种方式实现多线程程序: 一般来说,被线程执行的...

多线程学习(六)线程的调度-让步&合并&守护线程

转自:http://lavasoft.blog.51cto.com/62575/221811 Java线程:线程的调度-让步 线程的让步含义就是使当前运行着线程让出CPU资源,但是然给谁不知道,仅...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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