`
mr_wangjq
  • 浏览: 38981 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Thread.join()

阅读更多

Thread的非静态方法join()让一个线程t2“加入”到另外一个线程t1的尾部。在A执行完毕之前,B不能执行

 

 

分别注释t1.join()和t2.join()观察程序打印顺序

 

class ThreadTesterA implements Runnable {
	private int i;
	public void run() {
		try {
			while (i <= 10) {
				System.out.println("ThreadTesterA = " + i + " ");
				Thread.sleep(500);
				i++;
			}
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
}

class ThreadTesterB implements Runnable {
	private int i;
	public void run() {
		try {
			while (i <= 10) {
				System.out.println("ThreadTesterB = " + i + " ");
				Thread.sleep(500);
				i++;
			}
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
}

public class MyThread {
	public static void main(String[] args) throws InterruptedException {
		Thread t1 = new Thread(new ThreadTesterA());
		Thread t2 = new Thread(new ThreadTesterB());
		
		System.out.println("准备执行线程");
		t1.start();
		System.out.println("已经启动线程t1");
		
		t1.join(); // 等待线程t1执行完时才向下执行

		t2.start();
		System.out.println("已经启动线程t2");
		t2.join(); // 等待线程t2执行完时才向下执行

		System.out.println("总线程执行结束");
	}
}

 

程序执行结果:

准备执行线程
已经启动线程t1
ThreadTesterA = 0
ThreadTesterA = 1
ThreadTesterA = 2
ThreadTesterA = 3
ThreadTesterA = 4
ThreadTesterA = 5
ThreadTesterA = 6
ThreadTesterA = 7
ThreadTesterA = 8
ThreadTesterA = 9
ThreadTesterA = 10
已经启动线程t2
ThreadTesterB = 0
ThreadTesterB = 1
ThreadTesterB = 2
ThreadTesterB = 3
ThreadTesterB = 4
ThreadTesterB = 5
ThreadTesterB = 6
ThreadTesterB = 7
ThreadTesterB = 8
ThreadTesterB = 9
ThreadTesterB = 10
线程执行结束

0
0
分享到:
评论

相关推荐

    关于C#中Thread.Join()的一点理解

    是第一次在C#中接触Thread,自己研究了一下其中Thread.Join()这个方法,下面谈谈自己的理解。  Thread.Join()在MSDN中的解释很模糊:Blocks the calling thread until a thread terminates  有两个主要问题: ...

    CountDownLatch与thread.join()的区别

    CountDownLatch与thread.join()的区别

    C#多线程之Thread中Thread.Join()函数用法分析

    本文实例讲述了C#多线程之Thread中Thread.Join()函数用法。分享给大家供大家参考。具体分析如下: Thread.Join()在MSDN中的解释:Blocks the calling thread until a thread terminates 当NewThread调用Join方法的...

    java 中Thread.join()的使用方法

    主要介绍了java 中Thread.join()的使用方法的相关资料,需要的朋友可以参考下

    Java中Thread.join()的使用方法

    主要介绍了Java中Thread.join()的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    浅谈Java线程Thread.join方法解析

    本篇文章主要介绍了浅谈Java线程Thread.join方法解析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    线程创建,线程等待与清除,thread_clean.c,thread_create.c,thread_create.c,thread_exit_struct.c,thread_id.c,thread_int.c, thread_join.c, thread_join.c, thread_string.c, thread_struct.c

    线程创建,线程等待与清除,thread_clean.c,thread_create.c,thread_create.c,thread_exit_struct.c,thread_id.c,thread_int.c, thread_join.c, thread_join.c, thread_string.c, thread_struct.c

    c++11中关于std::thread的join的详解

    主要介绍了c++11中关于std::thread的join详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    毕业设计基于Opencv的车牌识别系统

    surface.thread.join(2.0) win.destroy() if __name__ == '__main__': win = tk.Tk() surface = Surface(win) # close,退出输出destroy win.protocol('WM_DELETE_WINDOW', close_window) # 进入消息循环 ...

    Python多线程中阻塞(join)与锁(Lock)使用误区解析

    Thread.join() 作用为阻塞主线程,即在子线程未返回的时候,主线程等待其返回然后再继续执行. join不能与start在循环里连用 以下为错误代码,代码创建了5个线程,然后用一个循环激活线程,激活之后令其阻塞主线程. ...

    线程同步实践

    不过在android中,mainThread控制着屏幕的刷新,如果调用在main thread中调用join将会导致屏幕无法刷新。 所以,我们可以通过专门新建一个线程,用这个线程来等待已有线程的结束,在已有线程结束后,在通过...

    多线程机制

    7、 浅析 Java Thread.join() : java多线程实现主线程等待所有子线程执行完毕 16 8、 线程运行中抛出异常的处理 19 9、 Callable 有返回值的线程 20 10、 Callable结合FutureTask的多线程使用(免打扰模式) 24

    并发编程的魅力fager20200614.docx

    线程终结规则:线程中所有的操作都先行发生于线程的终止检测,我们可以通过Thread.join()方法结束、Thread.isAlive()的返回值手段检测到线程已经终止执行; h.对象终结规则:一个对象的初始化完成先行发生于他的...

    NET多线程同步方法详解

    .NET多线程同步方法详解(一):... 除了以上的这些对象之外实现线程同步的还可以使用Thread.Join方法。这种方法比较简单,当你在第一个线程运行时想等待第二个线程执行结果,那么你可以让第二个线程Join进来就可以了。

    java基本教程之join方法详解 java多线程教程

    本文对java Thread中join()方法进行介绍,join()的作用是让“主线程”等待“子线程”结束之后才能继续运行,大家参考使用吧

    对python 多线程中的守护线程与join的用法详解

    thread.join():在子线程完成运行之前,该子线程的父线程(一般就是主线程)将一直存在,也就是被阻塞 实例: #!/usr/bin/python # encoding: utf-8 import threading from time import ctime,sleep def func1(): ...

    python thread 并发且顺序运行示例

    复制代码 代码如下:#-*- coding:utf-8 -*- import threading import time def fun(name, ls_name, front_thread = None): ””’ 线程启动函数 ...= None: front_thread.join() ls_name.append(name) print “thread %

    多线程并发代码的IntelliJ IDEA中调试方法.docx

    在main()方法中启动两个线程,然后调用thread1.join()和thread2.join(),以使主线程在“线程1”和“线程2”都返回结果之前不会进一步执行。 最后将两个线程的计算结果相加,得到100! + 100000! 下面就让我们使用...

    C#实现的声音录制回放的小程序

    m_Thread.Join(); m_FillProc = null; FreeBuffers(); if (m_WaveOut != IntPtr.Zero) WaveNative.waveOutClose(m_WaveOut); } finally { m_Thread = null; m_Wave...

Global site tag (gtag.js) - Google Analytics