21xrx.com
2024-06-03 06:51:08 Monday
登录
文章检索 我的文章 写文章
Java多线程打印奇偶数的数字代码
2023-07-05 02:34:31 深夜i     --     --
Java 多线程 打印 奇偶数 代码

Java是一种非常流行的编程语言,它可以用来开发各种各样的应用程序。在Java中,多线程编程是非常常见和重要的一部分。今天我们来介绍一种使用多线程实现打印奇偶数的数字代码。

在Java中,创建一个线程有两种方式:继承Thread类,或者实现Runnable接口。在本篇文章中,我们使用后者实现多线程。

下面是实现多线程打印奇偶数的代码:


public class Printer implements Runnable {

  private boolean isEven;

  private int maxNum;

  private static int num = 1;

  private static Object lock = new Object();

  public Printer(boolean isEven, int maxNum)

    this.isEven = isEven;

    this.maxNum = maxNum;

  

  @Override

  public void run() {

    while (num <= maxNum) {

      synchronized (lock) {

        if (isEven && num % 2 == 0) {

          System.out.println(Thread.currentThread().getName() + ": " + num);

          num++;

        } else if (!isEven && num % 2 != 0) {

          System.out.println(Thread.currentThread().getName() + ": " + num);

          num++;

        }

      }

    }

  }

  public static void main(String[] args) {

    Printer printer1 = new Printer(true, 100);

    Printer printer2 = new Printer(false, 100);

    Thread thread1 = new Thread(printer1, "Even Printer");

    Thread thread2 = new Thread(printer2, "Odd Printer");

    thread1.start();

    thread2.start();

  }

}

这个代码中,我们创建了一个Printer类,实现了Runnable接口。这个类有三个属性:isEven表示该线程打印的数是偶数还是奇数,maxNum表示最大的数字,num表示当前打印的数字。lock是一个共享的锁,用来保证线程安全。

在run方法中,我们使用一个while循环,当num小于等于maxNum时,不断打印数字。在打印之前,我们使用synchronized关键字锁住lock对象,保证线程安全。在锁定之后,我们根据isEven的值判断当前线程应该打印奇数还是偶数,如果符合条件则打印出来,并将当前打印的数字加1。如果不符合条件,则跳过打印过程,直接进行下一个循环。

在main方法中,我们创建两个Printer对象,分别代表打印奇数和偶数。然后创建两个线程,分别使用Printer对象作为线程参数,并给线程命名为Even Printer和Odd Printer。最后启动两个线程,它们将会在不同的线程中并发运行,打印出所有的奇偶数。

总之,Java的多线程编程非常实用,能够帮助我们更好地实现各种功能。上面的代码就展示了如何使用多线程打印奇偶数。如果你对Java的多线程编程感兴趣,可以深入学习更多的知识。

  
  

评论区

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