Java专题十三(6):线程顺序执行(join、newSingleThreadExecutor)
join
是java.lang.Thread
中的一个方法,用于线程串行执行
在B线程中调用了A线程的join()方法时,表示只有当A线程执行完毕时,B线程才能继续执行。
public class ThreadA extends Thread{
public void run(){
System.out.println("currentThread => ThreadA");
}
}
public class ThreadB extends Thread{
Thread previous;
public ThreadB(Thread t){
previous = t;
}
public void run(){
if (null != previous){
previous.join();
}
System.out.println("currentThread => ThreadB");
}
}
public class ThreadTest{
public static void main(String[] args) {
Thread threadA = new ThreadA();
Thread threadB = new ThreadB(threadA);
threadA.start();
threadB.start();
}
}
输出结果:
currentThread => ThreadA
currentThread => ThreadB
使用单线程线程池,提交到线程池的线程任务会被顺序执行
public class ThreadA extends Thread{
public void run(){
System.out.println("currentThread => ThreadA");
}
}
public class ThreadB extends Thread{
public void run(){
System.out.println("currentThread => ThreadB");
}
}
public class ThreadTest{
public static void main(String[] args) {
Thread threadA = new ThreadA();
Thread threadB = new ThreadB();
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.execute(threadA);
executor.execute(threadB);
}
}
输出结果:
currentThread => ThreadA
currentThread => ThreadB
原文:https://www.cnblogs.com/myibu/p/12925018.html