package org.example;
public class PrintNumThread implements Runnable {
int num = 0;
@Override
public void run() {
while (num <= 100) {
//锁住当前对象
synchronized (this) {
//一进来就需要唤醒等待的线程
//可以使用notifyAll(),因这里有两个线程就使用notify()
notify();
//输出
System.out.println(Thread.currentThread().getName() + num++);
// try {
// Thread.sleep(1 * 1000L);
// } catch (InterruptedException e) {
// throw new RuntimeException(e);
// }
try {
//阻塞,让出锁和cpc资源
wait();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
}
public static void main(String[] args) {
//使用同一个任务跑线程
PrintNumThread printNumThread = new PrintNumThread();
Thread thread1 = new Thread(printNumThread, "A线程");
Thread thread2 = new Thread(printNumThread, "B线程");
thread1.start();
thread2.start();
}
}