21xrx.com
2024-09-20 00:41:52 Friday
登录
文章检索 我的文章 写文章
Java多线程打印奇偶数的数字代码
2023-06-24 15:03:55 深夜i     --     --
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程序的执行效率和并发处理能力,也让复杂的程序变得更加容易开发和维护。

  
  

评论区

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