legongju.com
我们一直在努力
2025-01-11 19:47 | 星期六

java怎么交替打印奇偶数

在Java中,你可以使用两个线程来交替打印奇数和偶数。这里是一个简单的示例:

public class AlternatePrinting {
    private static volatile int counter = 1;

    public static void main(String[] args) {
        Object lock = new Object();

        Thread oddThread = new Thread(() -> {
            while (counter <= 100) {
                synchronized (lock) {
                    if (counter % 2 == 1) {
                        System.out.println("Odd: " + counter);
                        counter++;
                        lock.notify();
                    } else {
                        try {
                            lock.wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        });

        Thread evenThread = new Thread(() -> {
            while (counter <= 100) {
                synchronized (lock) {
                    if (counter % 2 == 0) {
                        System.out.println("Even: " + counter);
                        counter++;
                        lock.notify();
                    } else {
                        try {
                            lock.wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        });

        oddThread.start();
        evenThread.start();
    }
}

在这个示例中,我们创建了两个线程:oddThreadevenThread。这两个线程共享一个锁对象 lock 和一个静态变量 counter。当 counter 为奇数时,oddThread 打印奇数并增加 counter,然后调用 lock.notify() 唤醒等待的线程。当 counter 为偶数时,evenThread 打印偶数并增加 counter,然后调用 lock.notify() 唤醒等待的线程。如果当前线程无法打印数字,它将调用 lock.wait() 进入等待状态。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/102467.html

相关推荐

  • MyBatis typealias与Java类型转换

    MyBatis typealias与Java类型转换

    MyBatis 的 typeAlias 功能允许你为 Java 类型定义一个简短的别名,这样在映射文件(mapper.xml)中就可以使用这个别名来引用 Java 类型,而不是直接使用完整的类...

  • java var是什么意思

    java var是什么意思

    在Java中,var 是一个关键字,用于声明局部变量。它表示编译器应该根据变量的初始值自动推断变量的类型。这种特性被称为“类型推断”或“隐式类型”。
    使用...

  • java中float是什么意思

    java中float是什么意思

    在Java编程语言中,float 是一个基本数据类型,用于表示单精度浮点数。浮点数是一种可以表示实数(包括整数和小数)的数值类型。float 类型的变量可以存储范围约...

  • java中continue是什么意思

    java中continue是什么意思

    在Java编程语言中,continue是一个控制流语句的关键字
    当在循环(如for或while)中遇到continue语句时,程序会跳过当前循环迭代中continue之后的所有语句,...

  • java怎么定义链表

    java怎么定义链表

    在Java中,可以使用内置的LinkedList类来定义链表。LinkedList类位于java.util包中,它实现了List接口,因此可以像操作其他列表一样操作它。
    首先,需要导入...

  • c++中析构函数的作用是什么

    c++中析构函数的作用是什么

    在C++中,析构函数(Destructor)是一种特殊类型的成员函数,它在对象的生命周期结束时被自动调用 清理资源:如果对象在其生命周期中分配了动态内存、打开了文件...

  • c++ const作用是什么

    c++ const作用是什么

    在C++中,const关键字主要有以下几个作用: 声明常量:使用const可以声明一个常量,表示该变量的值在程序运行过程中不能被修改。例如:
    const int kConstan...

  • c++如何获取进程名

    c++如何获取进程名

    在 C++ 中,可以使用 Windows API 函数 GetModuleFileName 来获取当前进程的模块文件名(包括路径和文件名)
    #include
    #include
    #include std::s...