如何实现JAVA交替打印奇偶数

作为一名经验丰富的开发者,我将向你解释如何在JAVA中实现交替打印奇偶数的问题。这个问题可以通过使用多线程和synchronized关键字来解决。下面我将详细说明整个流程,并给出每一步需要做什么以及对应的代码示例。

流程

下面是整个实现JAVA交替打印奇偶数的流程:

步骤 操作
1 创建一个共享的对象,用来存放当前的数字和一个flag,表示当前数字的奇偶性
2 创建两个线程,一个用来打印奇数,一个用来打印偶数
3 在每个线程中使用synchronized关键字来确保交替打印
4 使用wait()和notify()来控制线程的执行顺序

代码示例

步骤1:创建共享对象

public class SharedObject {
    private int number = 1;
    private boolean isOdd = true;
    
    public synchronized void printOdd(int num) {
        while (!isOdd) {
            try {
                wait(); // 当前线程等待
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("奇数:" + num);
        isOdd = false;
        notify(); // 唤醒等待的线程
    }
    
    public synchronized void printEven(int num) {
        while (isOdd) {
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("偶数:" + num);
        isOdd = true;
        notify();
    }
}

步骤2:创建两个线程

public class Main {
    public static void main(String[] args) {
        SharedObject sharedObject = new SharedObject();
        
        Thread oddThread = new Thread(() -> {
            for (int i = 1; i <= 10; i+=2) {
                sharedObject.printOdd(i);
            }
        });
        
        Thread evenThread = new Thread(() -> {
            for (int i = 2; i <= 10; i+=2) {
                sharedObject.printEven(i);
            }
        });
        
        oddThread.start();
        evenThread.start();
    }
}

总结

通过使用多线程和synchronized关键字,我们成功地实现了JAVA中交替打印奇偶数的问题。希望这篇文章能够帮助你理解并解决这个问题。如果有任何疑问或者需要进一步的解释,请随时联系我。祝你编程愉快!