21xrx.com
2025-03-29 02:15:48 Saturday
文章检索 我的文章 写文章
Java多线程打印奇偶数的数字代码
2023-06-24 15:03:55 深夜i     14     0
Java 多线程 打印 奇偶数 代码

在Java中,多线程是常见的编程概念,可以让程序执行更快,更高效。在这篇文章中,我们将介绍如何使用Java多线程实现打印奇偶数的数字代码。

首先,我们需要创建一个包含两个线程的类,一个线程用于打印偶数,另一个线程用于打印奇数。以下是代码示例:

public class PrintNumbers {
  public static void main(String[] args) {
    // Create object of shared class
    SharedPrinter sharedPrinter = new SharedPrinter();
    // Create threads
    Thread evenThread = new Thread(new EvenNumberThread(sharedPrinter));
    Thread oddThread = new Thread(new OddNumberThread(sharedPrinter));
    // Start threads
    evenThread.start();
    oddThread.start();
  }
}
class SharedPrinter {
  private boolean evenFlag;
  synchronized void printEven(int number) {
    while (!evenFlag) {
      try {
        wait();
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
    System.out.println(Thread.currentThread().getName() + " " + number);
    evenFlag = false;
    notify();
  }
  synchronized void printOdd(int number) {
    while (evenFlag) {
      try {
        wait();
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
    System.out.println(Thread.currentThread().getName() + " " + number);
    evenFlag = true;
    notify();
  }
}
class EvenNumberThread implements Runnable {
  private SharedPrinter sharedPrinter;
  EvenNumberThread(SharedPrinter sharedPrinter)
    this.sharedPrinter = sharedPrinter;
  
  @Override
  public void run() {
    for (int i = 2; i <= 20; i = i + 2) {
      sharedPrinter.printEven(i);
    }
  }
}
class OddNumberThread implements Runnable {
  private SharedPrinter sharedPrinter;
  OddNumberThread(SharedPrinter sharedPrinter)
    this.sharedPrinter = sharedPrinter;
  
  @Override
  public void run() {
    for (int i = 1; i <= 20; i = i + 2) {
      sharedPrinter.printOdd(i);
    }
  }
}

在上面的代码中,我们创建了一个`SharedPrinter`类,该类包含两个同步方法`printEven`和`printOdd`。这些方法使用`wait()`方法等待另一个线程打印数字,然后使用`notify()`方法通知等待的线程开始打印数字。

创建两个线程`EvenNumberThread`和`OddNumberThread`,这些线程执行`printEven`和`printOdd`方法,分别打印奇数和偶数数字。

最后,我们在`main`方法中创建对象`SharedPrinter`,并使用`Thread`类创建`EvenNumberThread`和`OddNumberThread`线程,然后通过`start()`方法启动线程。

输出结果将会是:

EvenNumberThread 2
OddNumberThread 1
EvenNumberThread 4
OddNumberThread 3
EvenNumberThread 6
OddNumberThread 5
EvenNumberThread 8
OddNumberThread 7
EvenNumberThread 10
OddNumberThread 9
EvenNumberThread 12
OddNumberThread 11
EvenNumberThread 14
OddNumberThread 13
EvenNumberThread 16
OddNumberThread 15
EvenNumberThread 18
OddNumberThread 17
EvenNumberThread 20
OddNumberThread 19

以上便是一个简单的Java多线程打印奇偶数数字代码实现。使用多线程编程可以提高Java程序的执行效率和并发处理能力,也让复杂的程序变得更加容易开发和维护。

  
  

评论区