import java.util.concurrent.locks.LockSupport;
public class Test {
static class ThreadA extends Thread {
private Thread thread;
public void setThread(Thread thread) {
this.thread = thread;
}
@Override
public void run() {
int count = 0;
for (int i = 0; i < 52; i++) {
System.out.print(i + 1);
count++;
if (count == 2) {
count = 0;
LockSupport.unpark(thread);
LockSupport.park();
}
}
}
}
static class ThreadB extends Thread {
private Thread thread;
public void setThread(Thread thread) {
this.thread = thread;
}
@Override
public void run() {
for (int i = 0; i < 26; i++) {
LockSupport.park();
System.out.print((char)(97 + i));
LockSupport.unpark(thread);
}
}
}
public static void main(String[] args) throws InterruptedException {
for (int i = 0; i < 1000000; i++) {
ThreadA threadA = new ThreadA();
ThreadB threadB = new ThreadB();
threadA.setThread(threadB);
threadB.setThread(threadA);
//线程B先park 必须先start,否则的话,如果遍历的次数尽可能的大,你会发现程序不会正常结束,线程B处于wating状态
threadB.start();
threadA.start();
threadA.join();
threadB.join();
System.out.println();
}
System.out.println("process is over");
}
}
两线程交替打印12a34b56c78d910.........
最新推荐文章于 2022-10-19 20:29:17 发布