两种方法解题目;
1.
package com.dume.server.face;
/**
* 建立三个线程A、B、C,
* A线程打印10次字母A,
* B线程打印10次字母B,
* C线程打印10次字母C,但是要求三个线程同时运行,
* 并且实现交替打印,即按照ABCABCABC的顺序打印。
*/
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
public class ThreadABC01 {
public static void main(String[] args) {
Print();
}
public static void Print(){
for(int i = 1; i<=10;i++){
CompletableFuture.runAsync(()->{
System.out.print("A");
}).thenRunAsync(()->{
System.out.print("B");
}).thenRunAsync(()->{
System.out.print("C");
});
try{
TimeUnit.SECONDS.sleep(1);
}catch (Exception e){
e.printStackTrace();
}
}
System.out.println("");
}
}
2.
package com.dume.server.face;
/**
* 建立三个线程A、B、C,
* A线程打印10次字母A,
* B线程打印10次字母B,
* C线程打印10次字母C,但是要求三个线程同时运行,
* 并且实现交替打印,即按照ABCABCABC的顺序打印。
*/
import java.util.concurrent.locks.LockSupport;
public class ThreadABC02 {
static Thread A, B,C;
public static void main(String[] args) {
A = new Thread(()->{
for(int i = 0; i < 10; i++){
LockSupport.park();
System.out.print("A");
LockSupport.unpark(B);
}
});
B = new Thread(()->{
for(int i = 0; i < 10; i++){
LockSupport.park();
System.out.print("B");
LockSupport.unpark(C);
}
});
C = new Thread(()->{
for(int i = 0; i < 10; i++){
LockSupport.unpark(A);
LockSupport.park();
System.out.print("C");
}
});
A.start();
B.start();
C.start();
}
}