21xrx.com
2025-03-31 06:55:47 Monday
文章检索 我的文章 写文章
Java多线程交替打印奇偶数的实现方式
2023-07-07 04:05:44 深夜i     13     0
Java 多线程 交替打印 奇偶数 实现方式

在Java中,我们可以使用多线程的方式来实现交替打印奇偶数。这种方式可以让我们更好地理解并发编程的一些基本概念,并且在实际应用中也是非常常见的。

下面介绍一种简单的实现方式:

1. 创建一个实现Runnable接口的类,例如:

public class PrintRunnable implements Runnable {
    private boolean isOdd;
    private int num;
    private static Object lock = new Object();
    public PrintRunnable(boolean isOdd, int num)
      this.isOdd = isOdd;
      this.num = num;
   
    @Override
    public void run() {
      synchronized (lock) {
        while (num <= 100) {
          if ((num % 2 == 1 && isOdd) || (num % 2 == 0 && !isOdd)) {
            System.out.println(Thread.currentThread().getName() + ": " + num);
            num++;
            lock.notifyAll();
          } else {
            try {
              lock.wait();
            } catch (InterruptedException e) {
              e.printStackTrace();
            }
          }
        }
      }
    }
  }

2. 在主方法中创建两个线程,分别用来打印奇数和偶数。代码如下:

public static void main(String[] args) {
    PrintRunnable printOdd = new PrintRunnable(true, 1);
    PrintRunnable printEven = new PrintRunnable(false, 2);
    Thread threadOdd = new Thread(printOdd, "odd");
    Thread threadEven = new Thread(printEven, "even");
    threadOdd.start();
    threadEven.start();
  }

在这个实现方式中,我们通过使用一个锁对象来保证线程的访问顺序,同时每次打印完一个数字后使用notifyAll()方法唤醒其他线程。在run()方法中,我们使用while循环来打印数字,直到达到100为止。如果当前数字是奇数并且当前线程负责打印奇数,或者当前数字是偶数并且当前线程负责打印偶数,则打印当前数字并唤醒其他线程。否则,当前线程进入等待状态。

在实际应用中,这种多线程交替打印奇偶数的实现方式可以帮助我们更好地处理并发编程中的一些问题,例如死锁、线程安全等问题。使用这种方式进行编程可以增强我们对Java多线程处理的理解,提高我们的编程能力。

  
  

评论区

请求出错了