public class test {
public static int count=0;
private static final Object lock =new Object();
//lock是当前对象的锁
public static void main(String[] args) {
/**
此处()->匿名函数相当于
new Runnable(){
@Override
public void run()}
**/
new Thread(()->{
while(count<100){
if((count&1)==0) {
//如果是偶数,给当前线程方法加锁
synchronized (lock){
System.out.println(Thread.currentThread().getName()+":"+count++);
lock.notify();
//notify()会在加锁代码块执行后才唤醒其他线程
try {
lock.wait();
//本线程睡眠
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
},"偶数").start();
new Thread(()->{
while(count<100){
if((count&1)==1) {
synchronized (lock){
System.out.println(Thread.currentThread().getName()+":"+count++);
lock.notify();
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
},"奇数").start();
}
}
Java面试:使用多线程实现交替打印奇偶数
最新推荐文章于 2023-06-23 02:46:34 发布