21xrx.com
2024-11-05 16:35:39 Tuesday
登录
文章检索 我的文章 写文章
"Java多线程交替打印奇偶数的代码怎么写?"
2023-07-12 21:17:10 深夜i     --     --
Java 多线程 交替打印 奇偶数 代码

Java是一种面向对象编程语言,在多线程编程方面表现出色。在Java中,使用多线程交替打印奇偶数是常见的面试题目。实现多线程交替打印奇偶数可以通过以下代码来实现。


public class PrintOddEven {

  public static void main(String[] args) {

    final Object monitor = new Object();

    Thread oddThread = new Thread(new Runnable() {

      public void run() {

        synchronized (monitor) {

          for (int i = 1; i <= 10; i += 2) {

            System.out.println("Odd: " + i);

            monitor.notify(); 

            try {

              monitor.wait(); 

            } catch (InterruptedException e) {

              e.printStackTrace();

            }

          }

          monitor.notify();

        }

      }

    });

    Thread evenThread = new Thread(new Runnable() {

      public void run() {

        synchronized (monitor) {

          for (int i = 2; i <= 10; i += 2) {

            System.out.println("Even: " + i);

            monitor.notify(); 

            try {

              monitor.wait(); 

            } catch (InterruptedException e) {

              e.printStackTrace();

            }

          }

          monitor.notify();

        }

      }

    });

    oddThread.start();

    evenThread.start();

  }

}

在这个例子中,我们创建了两个线程来分别打印奇数和偶数。关键在于使用多线程之间共享的一个monitor对象进行同步。其中,使用wait()方法使线程等待,而使用notify()方法通知其他线程继续执行。

在奇数线程中,我们首先获得了monitor对象的锁,然后使用for循环打印奇数并通知偶数线程,该线程等待,等待偶数线程打印并通知它。随后再次等待。

在偶数线程中,我们做了类似的操作:获取monitor对象的锁,用for循环打印偶数,并通知奇数线程等待,该线程等待,等待奇数线程打印并通知它。随后再次等待。

最后,我们使用了两个线程分别打印奇数和偶数,并启动这两个线程。

在实现多线程交替打印奇偶数时,代码量虽然不是很大,但是需要注意的细节非常多。这也是面试官常常挑战程序员的一个基本问题。如果能够熟练地使用wait()和notify()方法进行线程同步,那么就能够更好地应对这类面试问题。

  
  

评论区

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