Thread的join的用法(线程执行排序)

此为转载解释:

线程必须要先start,才能join,只有启动了,才能对线程进行操作。

如有一个线程叫A,那么请看以下示例代码

A.start();   //启动A线程

A.join();   //邀请A线程先执行,本线程先暂停执行,等待A线程执行完后,主线程再接着往下执行

System.out.println("OK");   //这句话,要等到A线程执行完后,主线程获取到执行权后,才会被执行

具体例子:

代码段里,我把所有的join都注释掉了,输出的效果是

我把注释都打开join的注释,输出结果如下:

结论,可以利用join排列线程的顺序,达到线程顺序执行的效果。

Thread的join的用法(线程执行排序)

时间: 2024-11-05 15:00:27

Thread的join的用法(线程执行排序)的相关文章

多线程(守护线程、join方法、线程优先级、线程组)

setDaemon(boolean on): 守护线程(后台线程),若前台(显示)线程都结束了则后台线程自动结束. 使用setDaemon(boolean on)方法,必须在开启线程前将线程标记为守护线程. 示例: class setDaemon implements Runnable { public void run() { while (true) { System.out.println(Thread.currentThread().getName()+"...run"); }

Java多线程--让主线程等待所有子线程执行完毕 join

首先从公司一道笔试题开始 1 package test; 2 3 public class Test implements Runnable { 4 5 public int i = 0; 6 7 @Override 8 public void run() { 9 try { 10 Thread.sleep(1000); 11 } catch (InterruptedException e) { 12 // TODO Auto-generated catch block 13 e.printSt

指定线程执行的顺序---join()

线程T1,T2,T3分别启动,如何让其执行顺序变为T3>T2>T1: 线程1: 1 package test6; 2 3 public class Thread1 extends Thread{ 4 5 private Thread thread2; 6 public Thread1(Thread thread2){ 7 this.thread2=thread2; 8 } 9 @Override 10 public void run(){ 11 try { 12 thread2.join();

CountDownLatch用法---等待多个线程执行完才执行

CountDownLatch用法---等待多个线程执行完才执行 一.CountDownLatch用法 CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能.比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了. CountDownLatch类只提供了一个构造器: 1 public CountDownLatch(int count) {  };  //参数count为计数值

java线程Thread的join方法。

1,方法的作用: 父线程等待子线程的执行. 如果是join或者join(0),即等待时长是0,父线程就会一直等到子线程执行结束, 如果是join(time),即等待时长是time数值,那父线程等待时长视情况而定: 第一种:子线程执行时长不需要time时长,那么父线程就可能不会等待到time时长,为什么是可能呢?是不是要考虑其他线程(不包括父线程,和子线程以外的线程),他也可能让父线程等待的(没有获取到cpu时间片等原因), 第二种:子线程执行时长超过time时长,那么父线程的等待时长,至少是ti

在Android中使用Handler和Thread线程执行后台操作

转载自:http://www.cnblogs.com/crazypebble/archive/2011/03/23/1991829.html 声明:此文在参考<解密Google Android>一书 和 Android视频教程(www.mars-droid.com). 大家都知道,在PC上的应用程序当需要进行一些复杂的数据操作,但不需要界面UI的时候,我们会为应用程序专门写一个线程去执行这些复杂的数据操作.通过线程,可以执行例如:数据处理.数据下载等比较耗时的操作,同时对用户的界面不会产生影响

java主线程等待所有子线程执行完毕在执行(常见面试题)

java主线程等待所有子线程执行完毕在执行(常见面试题) java主线程等待所有子线程执行完毕在执行,这个需求其实我们在工作中经常会用到,比如用户下单一个产品,后台会做一系列的处理,为了提高效率,每个处理都可以用一个线程来执行,所有处理完成了之后才会返回给用户下单成功,下面就说一下我能想到的方法,欢迎大家批评指正: 用sleep方法,让主线程睡眠一段时间,当然这个睡眠时间是主观的时间,是我们自己定的,这个方法不推荐,但是在这里还是写一下,毕竟是解决方法 2.使用Thread的join()等待所有

python之多线程执行和非线程执行的对比

一.非线程执行(普通的执行) 1.非线程运行,简单代码如下 #_*_coding:utf-8_*_ import time import threading a = [] b = [] def func1():     print "func1 start %s" % time.ctime()     alist = ["192.168.1.100","192.168.1.120","192.168.1.134","

注意!你的Thread.Abort方法真的让线程停止了吗?

大家都知道在C#里面,我们可以使用 Thread.Start方法来启动一个线程,当我们想停止执行的线程时可以使用Thread.Abort方法来强制停止正在执行的线程,但是请注意,你确定调用了Thread.Abort方法后线程就立刻停止了吗? 答案是:不是! 下面我们来解释一下Abort方法是如何工作的.因为公用语言运行时管理了所有的托管的线程,同样它能在每个线程内抛出异常.Abort方法能在目标线程中抛出一个ThreadAbortException异常从而导致目标线程的终止.不过Abort方法被