`
mr_wangjq
  • 浏览: 40628 次
  • 性别: 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()`方法是一个非常重要的同步工具,它允许一个线程(调用者)等待另一个线程(被调用者)执行完成。`Thread.join()`的使用能够有效地解决多线程环境中的顺序执行问题,确保线程间的...

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

    Java 中 Thread.join() 的使用方法 Thread.join() 是 Java 中的一个重要方法,该方法允许一个线程等待另一个线程的执行完成。下面我们将详细介绍 Thread.join() 的使用方法、源码分析和示例代码。 1. join() 的...

    Thread.jone

    《线程之道——深入解析Java中的Thread.join()》 在Java编程中,多线程是不可或缺的一部分,它能让我们在程序执行过程中同时处理多个任务,提高效率。而`Thread.join()`方法则是Java线程间协作的重要工具,它允许一...

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

    Java线程Thread.join方法解析 Java线程中的join方法是一个非常重要的概念,它允许一个线程等待另一个线程的结束,以便进行后续的操作。在本篇文章中,我们将详细介绍Java线程Thread.join方法的解析和实现。 首先,...

    C#多线程之Thread中Thread.IsAlive属性用法分析

    - **等待(Wait)**:线程因调用了`Sleep()`, `Join()`, `Monitor.Wait()`, 或其他阻塞方法而暂停执行。 - **挂起(Suspended)**:线程被挂起,无法执行,但内存占用仍然存在。 - **终止(Stopped/Terminated)*...

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

    C++11中关于std::thread的join详解 C++11引入了std::thread库,提供了对多线程编程的支持。std::thread库提供了两个基本操作:join和detach。join操作用于回收线程资源,避免资源泄露;detach操作用于将线程与创建...

    java 携子之手 与子偕老(join)

    值得注意的是,join()方法可以指定等待的时间,即`thread.join(long millis)`,如果被join的线程在这段时间内没有结束,那么调用join()的线程将不再等待并继续执行。此外,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_create.c`、`thread_join.c`等源代码文件提供实际的编程示例,展示了如何在C语言中创建、管理线程。通过阅读和理解这些代码,开发者可以更好地理解和应用多线程技术。 总结,本主题涵盖了线程创建、等待、...

    Boost_thread库例程

    my_thread.join(); // 等待my_thread执行完毕 my_thread.detach(); // my_thread将继续运行,主线程不再等待 ``` 在提供的压缩包文件"Boost_thread库示例"中,可能包含了以上各种用法的实例代码,你可以通过阅读...

    c# 线程(thread)同步处理

    signalThread.Join(); } } ``` ### 总结 在C#中,线程同步机制非常重要,能够帮助开发者有效地管理多线程环境下的资源共享问题。通过合理使用`Interlocked`类、`Monitor`类和`WaitHandle`类等工具,可以显著提高...

    C#多线程.doc

    newThread.Join(); Console.WriteLine("Worker thread has finished."); Console.WriteLine("Press any key to exit."); Console.ReadKey(); } // 这是新线程要执行的方法 static void WorkerMethod() { ...

    python thread

    `thread_join.py`文件可能涵盖了`join()`方法,这是用来等待线程完成执行的关键函数。当你调用`join()`时,主线程会阻塞,直到该线程结束: ```python thread = threading.Thread(target=my_function) thread.start...

    线程常用方法示例

    `Thread.Interrupt`方法用于中断处于`Sleep`、`WaitOne`或`Join`状态的线程。不同于`Abort`,`Interrupt`不会立即终止线程,而是发出一个信号,使线程有机会响应并清理资源。当线程在`Sleep`或`WaitOne`中被中断时...

    ThreadDemo3.rar

    例如,`thread.join()`会使当前线程等待`thread`执行完毕。 8. **关闭线程**: 关闭线程通常不直接调用`stop()`方法,因为这可能导致资源泄露和数据不一致性。推荐的方式是设置一个共享标志,让线程在检查到这个...

    UseMonitor_C#_fly67x_多线程_

    此外,`Thread.Join()`方法可以让主线程等待指定线程的完成,避免主线程过早结束而使子线程未完成工作。 标签中的“fly67x”可能是个人开发者或者项目的标识,这里没有提供更多的上下文信息,所以无法进一步讨论。...

    Java线程中yield与join方法的区别Java开发J

    接着,我们来看`Thread.join()`方法。`join`方法的作用是等待指定线程执行完毕后再继续执行当前线程。它可以确保当前线程在调用`join`的线程执行完其所有任务后才继续执行,从而实现线程间的同步。`join`方法有一个...

Global site tag (gtag.js) - Google Analytics