方法一:
利用join()方法,join()方法可以让父线程等待子线程结束之后才能继续运行。具体join()的解释在
链接: link.
import java.util.concurrent.ThreadPoolExecutor;
public class ABC{
public static void main(String[] args) {
Thread A=new Thread(new Runnable() {
@Override
public void run() {
for(int i=0;i<10;i++){
System.out.println(Thread.currentThread().getName()+":i="+i);
}
}
},"A");
Thread B=new Thread(new Runnable() {
@Override
public void run() {
for(int i=0;i<10;i++){
System.out.println(Thread.currentThread().getName()+":i="+i);
}
try {
A.join(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
},"B");
Thread C=new Thread(new Runnable() {
@Override
public void run() {
for(int i=0;i<10;i++){
System.out.println(Thread.currentThread().getName()+":i="+i);
}
try {
B.join(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
},"C");
A.start();
B.start();
C.start();
}
}
方法二:
利用线程池的newSingleThreadExecutor(),线程池中只有一个线程执行任务,按顺序执行。
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ABC1 {
public static void main(String[] args) {
Thread A=new Thread(new Runnable() {
@Override
public void run() {
for(int i=0;i<10;i++){
System.out.println("A:i="+i);
}
}
},"A");
Thread B=new Thread(new Runnable() {
@Override
public void run() {
for(int i=0;i<10;i++){
System.out.println("B:i="+i);
}
}
},"B");
Thread C=new Thread(new Runnable() {
@Override
public void run() {
for(int i=0;i<10;i++){
System.out.println("C:i="+i);
}
}
},"C");
ExecutorService service=Executors.newSingleThreadExecutor();
service.submit(A);
service.submit(B);
service.submit(C);
}
}