21xrx.com
2025-03-31 22:53:38 Monday
文章检索 我的文章 写文章
Java实现交替打印奇偶数的多线程代码
2023-07-05 01:31:43 深夜i     16     0
Java 多线程 交替打印 奇偶数 代码

Java是一门高级编程语言,其多线程特性使其在并发编程方面非常出色。在多线程编程中,有些问题常常需要对线程进行同步控制,例如交替打印奇偶数问题。

在交替打印奇偶数问题中,需要创建两个线程分别打印奇数和偶数,两个线程交替打印,直至打印完一定范围内的所有奇偶数。

下面演示用Java实现交替打印奇偶数的多线程代码。

public class PrintOddEven {
  private static int number = 1;
  private static final Object lock = new Object();
  public static void main(String[] args) {
    Thread oddThread = new Thread(PrintOddEven::printOdd);
    Thread evenThread = new Thread(PrintOddEven::printEven);
    oddThread.start();
    evenThread.start();
  }
  private static void printOdd() {
    synchronized (lock) {
      while (number < 10) {
        while (number % 2 == 0) {
          try {
            lock.wait();
          } catch (InterruptedException e) {
            e.printStackTrace();
          }
        }
        System.out.println("Odd number: " + number);
        number++;
        lock.notify();
      }
    }
  }
  private static void printEven() {
    synchronized (lock) {
      while (number < 10) {
        while (number % 2 == 1) {
          try {
            lock.wait();
          } catch (InterruptedException e) {
            e.printStackTrace();
          }
        }
        System.out.println("Even number: " + number);
        number++;
        lock.notify();
      }
    }
  }
}

在代码中,我们使用一个锁对象来对两个线程进行同步控制。在线程中,我们使用一个while循环来不断检查是否轮到当前线程打印,如果是,就打印奇数或偶数,并唤醒另一个线程,否则就调用wait方法释放锁,直至下一次被唤醒。

在主函数中,我们创建两个线程并分别启动,即可实现线程交替打印奇偶数的功能。

  
  

评论区