您的位置:首页 > 其它

如何控制线程执行的先后顺序

2016-05-01 15:10 459 查看

1.如果你有三个线程,分别为T1,T2,T3,如何让线程T2在线程T1之后执行,在线程T3之前执行。

答案是:使用线程的join方法,该方法的作用是“等待线程执行结束”,即join()方法后面的代码块都要等待现场执行结束后才能执行。事例代码如下:

Java代码

package com.liuan.job;

public class Test {
@SuppressWarnings("static-access")
public static void main(String[] args) throws InterruptedException {
Thread t1 = new Thread(new Runner());
Thread t2 = new Thread(new Runner());
Thread t3 = new Thread(new Runner());
t1.start();
t1.sleep(5000);
t1.join();

t2.start();
t2.sleep(1000);
t2.join();
t3.start();
t3.join();

}

}

class Runner implements Runnable{

@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"");

}

}

package com.liuan.job;

public class Test {
@SuppressWarnings("static-access")
public static void main(String[] args) throws InterruptedException {
Thread t1 = new Thread(new Runner());
Thread t2 = new Thread(new Runner());
Thread t3 = new Thread(new Runner());
t1.start();
t1.sleep(5000);
t1.join();

t2.start();
t2.sleep(1000);
t2.join();
t3.start();
t3.join();

}

}

class Runner implements Runnable{

@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"");

}

}

执行结果是:

Thread-0

Thread-1

Thread-2

2.补充

线程的优先级无法保障线程的执行次序。只不过优先级高的线程获取 CPU 资源的概率大一点而已。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: