线程中jion方法

原创 2007年09月28日 08:26:00

以前在看More Java Pitfalls时候,上面在第一个item的时候提到了线程的jion()方法,当时没怎么懂,想try下又苦于身边没电脑,所以那一放就忘了,今天突然想起就写了程序try了一下,大概明白了其意思


public class ThreadTestSupport extends Thread {
 public void run() {
  System.out.println("run in thread!");
  try {
   sleep(9000);
  } catch (Exception e) {
   e.printStackTrace();
  }
  System.out.println("run in thread!");
 }
}

public class ThreadTest {
 public static void main(String[] args) {
  Thread t1 = new Thread(new ThreadTestSupport());
  t1.start();
  try {
   t1.join();
  } catch (InterruptedException e) {
   e.printStackTrace();
  }
  System.out.println("run out the method!");
 }

}

运行ThreadTest.java其运行如下:
run in thread!
run in thread!
run out the method!


public class ThreadTest {
 public static void main(String[] args) {
  Thread t1 = new Thread(new ThreadTestSupport());
  t1.start();
  System.out.println("run out the method!");
 }

}

如果将ThreadTest.java改成如上代码,则运行结果如下:
run out the method!
run in thread!
run in thread!

所以就可以很明白api中对jion:等待该线程终止。

也就是说如果使用Thread.join()方法的话,必须要等Thread执行完后才执行该代码后面的代码
如果没有的话,Thread创建的线程只是运行该程序的线程的一个进程,并和其共同竞争cpu资源

但是More Java Pitfalls 上面提到的:进程有可能在线程完成前就结束 。不太明白这句话的意思,我也没try出来让进程在线程钱结束的状态 

C#线程(三、线程同步技术之Join方法)

转自:http://blog.csdn.net/lyh916/article/details/46359027;http://www.cnblogs.com/lxblog/archive/2012/1...
  • qq_33337811
  • qq_33337811
  • 2017年06月02日 14:33
  • 515

线程的停止,守护进程,Join方法问题

对于线程的停止,我们不能用stop方法,已经过时,也可能会导致死锁问题,在API是这样说的 方法具有固有的不安全性。用 Thread.stop 来终止线程将释放它已经锁定的所有监视器(作为沿堆栈...
  • melissa_heixiu
  • melissa_heixiu
  • 2016年08月17日 20:42
  • 446

线程(一)--线程控制-join方法

1.让一个线程等待join线程完成后再执行: join()   2.让一个线程等待join线程多少毫秒后再执行: join(long millis)  3.让一个线程等待join线程多少...
  • whr0227
  • whr0227
  • 2016年03月02日 09:20
  • 1041

多个线程按顺序执行——join()

package com.jjyy.thread; /** * 假如有三个线程T1,T2,T3,如何保证T2在T3之前执行完成,T1在T2之前完成? * @author jiangyu 2015年9...
  • Before_Morning
  • Before_Morning
  • 2015年09月07日 08:30
  • 1842

【C/C++开发】多线程编程中的join函数

多线程编程中的join函数 1 2 3 4 5 6 7 8 9 10 11 12 ...
  • LG1259156776
  • LG1259156776
  • 2017年06月12日 20:03
  • 797

MapReduce:实现jion的几种方法

reduce side join reduce side join是一种最简单的join方式,其主要思想如下: 在map阶段,map函数同时读取两个文件File1和File2,为了区分两种来...
  • silentwolfyh
  • silentwolfyh
  • 2016年03月15日 11:27
  • 1417

join()之让线程按顺序执行

Thread中的join()主线程创建并启动子线程,如果子线程中要进行大量的耗时运算,主线程往往将在子线程运行结束前结束。如果主线程想等待子线程执行完成后再结束(如,子线程处理一个数据,主线程需要取到...
  • u012951554
  • u012951554
  • 2015年08月24日 15:01
  • 1685

JAVA多线程 join() 方法详解及应用场景

在某些情况下,主线程创建并启动了子线程,如果子线程中需要进行大量的耗时运算,主线程往往将早于子线程结束之前结束,如果主线程想等待子线程执行完毕后,获得子线程中的处理完的某个数据,就要用到join方法了...
  • liuyifeng1920
  • liuyifeng1920
  • 2016年11月17日 11:40
  • 2904

C#.Net前台线程与后台线程的区别 线程Jion的解释

.Net的公用语言运行时(Common Language Runtime,CLR)能区分两种不同类型的线程:前台线程和后台线程。这两者的区别就是:应用程序必须运行完所有的前台线程才可以退出;而对于后台...
  • lwkkkkk
  • lwkkkkk
  • 2015年10月11日 13:40
  • 112

Java中的join方法个人理解

因为今天看到一道笔试题目,就是怎么确保多线程不发生死锁问题,个人认为要确保多线程不发生死锁的办法就是让线程有序的操作资源,当然我也不知道对不对,如果网友发现有错,欢迎指出把。我当时想到的就是使用joi...
  • JY_He
  • JY_He
  • 2015年11月08日 20:34
  • 1677
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:线程中jion方法
举报原因:
原因补充:

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