两个线程交替数数
面试3 两个线程交替数数
import java.util.*;
public class DoubleThread {
public static void main(String[] args) throws InterruptedException {
MyThread task = new MyThread();
//开启两个线程
Thread t1 = new Thread(task, "斯嘉丽约翰孙");
Thread t2 = new Thread(task, "IU");
t2.start();
//保证IU先开始数数
Thread.sleep(500);
t1.start();
}
public static class MyThread implements Runnable {
int x = 0;
@Override
public synchronized void run() {
while (x < 10) {
//输出当前线程名字
System.out.println(Thread.currentThread().getName() + ":" + x);
x++;
//唤醒沉睡的线程
this.notify();
try {
//当前线程休眠
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//循环结束后,唤醒全部线程
this.notify();
}
}
}
IU:0
斯嘉丽约翰孙:1
IU:2
斯嘉丽约翰孙:3
IU:4
斯嘉丽约翰孙:5
IU:6
斯嘉丽约翰孙:7
IU:8
斯嘉丽约翰孙:9