一、使用join
class DemoApplicationTests {
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("大内密探001");
}
});
Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("大内密探002");
}
});
Thread thread3 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("大内密探003");
}
});
Thread thread4 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("大内密探004");
}
});
@Test
void threadTest() throws InterruptedException {
thread1.start();
thread1.join();
thread2.start();
thread2.join();
thread3.start();
thread3.join();
thread4.start();
}
}
控制台输出结果:
如果将join方法注掉:
class DemoApplicationTests {
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("大内密探001");
}
});
Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("大内密探002");
}
});
Thread thread3 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("大内密探003");
}
});
Thread thread4 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("大内密探004");
}
});
@Test
void threadTest() throws InterruptedException {
thread1.start();
// thread1.join();
thread2.start();
// thread2.join();
thread3.start();
// thread3.join();
thread4.start();
}
}
控制台输出结果:
join()方法表示:等待这个线程死亡
二、使用单个线程的线程池
class DemoApplicationTests {
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("大内密探001");
}
});
Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("大内密探002");
}
});
Thread thread3 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("大内密探003");
}
});
Thread thread4 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("大内密探004");
}
});
@Test
public void threadTest(){
ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.submit(thread1);
executorService.submit(thread2);
executorService.submit(thread3);
executorService.submit(thread4);
}
}
控制台输出结果: