Java多线程[2]:join() 方法
2015-09-30 14:53
369 查看
join()方法的使用场景
假设我们在主线程中创建了一个线程,这个线程要执行很长时间,我希望这个线程执行完并结束以后,主线程再结束,也就是说,我希望主线程能够晚于子线程结束。因为我们不知道子线程要执行多久,所以,也不知道主线程要等待多久,所以,join()方法诞生了。示例代码
首先,创建一个NewThread类,实现Runnable接口public class NewThread implements Runnable { Thread t; public NewThread() { t = new Thread(this, "my test thread"); t.start(); System.out.println("线程已启动"); } @Override public void run() { for (int i = 0; i < 5; i++) { System.out.println("child thread:"+i); } System.out.println("child thread exist"); } }
然后,在main方法中实例化一个NewThread对象
public class Program { public static void main(String[] args) { NewThread obj= new NewThread();//NewThread类实例化后,会自动启动线程 for (int i = 0; i < 5; i++) { System.out.println("main thread:"+i); } try { obj.t.join(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Main thread exist"); } }
运行结果
运行结果如下(可能每次运行都不一样)线程已启动 child thread:0 main thread:0 main thread:1 main thread:2 main thread:3 main thread:4 child thread:1 child thread:2 child thread:3 child thread:4 child thread exist Main thread exist
尽管多个线程之间是以不可知的速度向前执行的,但是,我们使用了join() 方法后,主线程总是晚于子线程结束。
join()方法的工作原理
在主线程中调用了子线程的 join()方法,主线程会一直等待,直到子线程执行完毕并加入其中,主线程再继续执行。这是join()方法的工作原理,也是该方法被命名为join的原因。相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- Python3写爬虫(四)多线程实现数据爬取
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序