Thread 提供的让一个线程等待另一个线程完成的方法:join()方法
2014-03-24 11:26
381 查看
public class JoinThread extends Thread
{
public JoinThread (String name)
{
//提供一个有参数的构造器,用于设置该线程的名字
super(name);
}
//重写run()方法,定义线程执行体
public void run()
{
for(int i = 0; i < 10; i++ )
{
System.out.println(getName() + " " + i );
}
}
public static void main(String[] args)throws Exception
{
//启动子线程
JoinThread jt1 = new JoinThread ("新线程");
jt1.start();
for (int i = 0; i < 40 ;i++ )
{
if(i ==20)
{
JoinThread jt = new JoinThread("被Join的线程");
jt.start();
//main线程调用了jt线程的join()方法,main线程必须等jt执行结束才会向下执行
jt.join();
}
System.out.println(Thread.currentThread().getName()+ " " +i);
}
}
}
运行结果:
main 0
新线程 0
新线程 1
main 1
新线程 2
main 2
main 3
main 4
main 5
新线程 3
新线程 4
新线程 5
新线程 6
main 6
main 7
main 8
main 9
main 10
main 11
main 12
main 13
main 14
main 15
main 16
main 17
新线程 7
新线程 8
新线程 9
main 18
main 19
被Join的线程 0
被Join的线程 1
被Join的线程 2
被Join的线程 3
被Join的线程 4
被Join的线程 5
被Join的线程 6
被Join的线程 7
被Join的线程 8
被Join的线程 9
main 20
main 21
main 22
main 23
main 24
main 25
main 26
main 27
main 28
main 29
main 30
main 31
main 32
main 33
main 34
main 35
main 36
main 37
main 38
main 39
{
public JoinThread (String name)
{
//提供一个有参数的构造器,用于设置该线程的名字
super(name);
}
//重写run()方法,定义线程执行体
public void run()
{
for(int i = 0; i < 10; i++ )
{
System.out.println(getName() + " " + i );
}
}
public static void main(String[] args)throws Exception
{
//启动子线程
JoinThread jt1 = new JoinThread ("新线程");
jt1.start();
for (int i = 0; i < 40 ;i++ )
{
if(i ==20)
{
JoinThread jt = new JoinThread("被Join的线程");
jt.start();
//main线程调用了jt线程的join()方法,main线程必须等jt执行结束才会向下执行
jt.join();
}
System.out.println(Thread.currentThread().getName()+ " " +i);
}
}
}
运行结果:
main 0
新线程 0
新线程 1
main 1
新线程 2
main 2
main 3
main 4
main 5
新线程 3
新线程 4
新线程 5
新线程 6
main 6
main 7
main 8
main 9
main 10
main 11
main 12
main 13
main 14
main 15
main 16
main 17
新线程 7
新线程 8
新线程 9
main 18
main 19
被Join的线程 0
被Join的线程 1
被Join的线程 2
被Join的线程 3
被Join的线程 4
被Join的线程 5
被Join的线程 6
被Join的线程 7
被Join的线程 8
被Join的线程 9
main 20
main 21
main 22
main 23
main 24
main 25
main 26
main 27
main 28
main 29
main 30
main 31
main 32
main 33
main 34
main 35
main 36
main 37
main 38
main 39
相关文章推荐
- 多线程之join()方法---(Thread提供的让一个线程等待另一个线程完成的方法)
- Thread.join()方法实现main()方法等待所有子线程执行完成[base jdk8]
- 通过线程计数器和Thread.Join方法得到线程已完成状态
- Thread.yield()方法表示交出主动权,join表示等待当前线程,可以指定秒数
- Nachos操作系统:Pro1.1:完成KThread.join方法
- Java中的线程Thread方法之---join()
- 从Thread.start()方法看Thread源码,多次start一个线程会怎么样
- thread.Join(); 让主线程等待自己完成
- Android开发笔记之:如何安全中止一个自定义线程Thread的方法
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目
- C# 在两个不同的方法里面Lock同一个锁对象,是否需要线程等待?
- .NET一个线程更新另一个线程的UI(两种实现方法及若干简化)
- 如何等待一个线程完成后才继续执行之后的操作
- singleton pattern的一个模板实现, 适用于单线程, 并且提供了Release方法
- java提供在一个类的main方法中调用另一个类的main方法
- java中等待其他线程执行完成之后,再去执行别的方法
- C#一个线程操作另一个线程的控件的方法
- C# 线程Thread的Join()方法
- 线程等待 Join()方法
- Android AsyncTask实现一个线程操作完成后启动另一个线程