117.info
人生若只如初见

java线程怎么交替打印

在Java中,可以使用两个线程交替打印数字。以下是一个示例代码:

public class AlternatePrinting {

    public static void main(String[] args) {
      
        Object lock = new Object();
        
        Runnable printOdd = () -> {
            synchronized(lock) {
                for (int i = 1; i <= 10; i += 2) {
                    System.out.println(i);
                    lock.notify();
                    try {
                        lock.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };
        
        Runnable printEven = () -> {
            synchronized(lock) {
                for (int i = 2; i <= 10; i += 2) {
                    System.out.println(i);
                    lock.notify();
                    try {
                        lock.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };
        
        Thread oddThread = new Thread(printOdd);
        Thread evenThread = new Thread(printEven);
        
        oddThread.start();
        evenThread.start();
    }
}

在这个示例中,我们创建了两个线程,一个线程负责打印奇数,另一个线程负责打印偶数。通过使用wait()和notify()方法,我们可以使两个线程交替打印数字。注意,我们使用一个共享锁对象来实现线程之间的同步。

未经允许不得转载 » 本文链接:https://www.117.info/ask/feea2AzsIAAdRAV0.html

推荐文章

  • 使用Java sublist()有什么陷阱

    使用Java的sublist()方法时需要注意以下几个陷阱: sublist()返回的是原列表的一个视图,而不是一个新的列表。这意味着对子列表的任何修改都会影响原列表。因此,...

  • Java sublist()方法如何工作

    sublist()方法是List接口中的一个方法,用于获取列表中指定范围的子列表。它接受两个参数:起始索引(包含)和结束索引(不包含),并返回一个包含原列表中指定范...

  • Java WeakReference的使用场景有哪些

    Java WeakReference通常用于以下场景: 缓存:在缓存中使用WeakReference可以避免内存泄漏,因为当内存不足时,垃圾回收器会自动回收WeakReference对象。 监视器...

  • Java sublist()与ArrayList新实例区别

    在Java中,ArrayList的subList()方法和ArrayList构造函数创建一个新的ArrayList实例之间存在一些区别。 subList()方法返回的是原始ArrayList的视图,而不是新的A...

  • oracle怎么查看当前用户权限

    在Oracle数据库中,可以使用以下SQL语句来查看当前用户的权限:
    SELECT * FROM USER_SYS_PRIVS; -- 查看当前用户的系统权限
    SELECT * FROM USER_TAB_P...

  • oracle怎么查看表空间下的所有表

    在Oracle数据库中,可以通过查询数据字典视图来查看表空间下的所有表。以下是一个查询示例:
    SELECT tablespace_name, table_name
    FROM dba_tables

  • oracle如何查找字符串

    在Oracle数据库中,可以使用LIKE操作符或INSTR函数来查找字符串。 使用LIKE操作符:
    LIKE操作符可以根据模式匹配字符串。语法如下: SELECT column_name

  • oracle怎么删除用户及表空间

    删除用户及其表空间可以分为以下步骤: 首先,连接到Oracle数据库,可以使用SQL*Plus或其他数据库客户端工具。 使用管理员权限登录到数据库中,执行以下语句删除...