21xrx.com
2024-06-03 05:35:06 Monday
登录
文章检索 我的文章 写文章
Java实现交替打印奇偶数的多线程代码
2023-07-05 01:31:43 深夜i     --     --
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方法释放锁,直至下一次被唤醒。

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

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复