当前位置:首页 > Java

java如何等待

2026-03-24 12:19:38Java

等待线程执行完成的方法

使用 Thread.join() 方法可以让当前线程等待目标线程执行完毕。调用该方法会阻塞当前线程,直到目标线程终止。

Thread thread = new Thread(() -> {
    // 线程任务代码
});
thread.start();
thread.join(); // 等待线程执行完成

使用 Object.wait()notify()

wait() 方法使当前线程进入等待状态,直到其他线程调用 notify()notifyAll() 方法唤醒它。使用时必须持有对象的监视器锁。

synchronized (lockObject) {
    lockObject.wait(); // 释放锁并等待
    // 被唤醒后继续执行
}

CountDownLatch 实现同步

CountDownLatch 是一个同步辅助类,允许一个或多个线程等待直到其他线程完成操作。

CountDownLatch latch = new CountDownLatch(1);
new Thread(() -> {
    // 执行任务
    latch.countDown(); // 计数减一
}).start();
latch.await(); // 等待计数归零

CyclicBarrier 等待多个线程

CyclicBarrier 可以让一组线程互相等待,直到所有线程都到达某个屏障点。

CyclicBarrier barrier = new CyclicBarrier(2);
new Thread(() -> {
    // 执行任务
    barrier.await(); // 等待其他线程
}).start();
barrier.await(); // 主线程等待

CompletableFuture 异步等待

CompletableFuture 提供了异步编程的能力,可以等待异步任务完成。

CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
    // 异步任务
});
future.get(); // 阻塞等待任务完成

Thread.sleep() 暂停执行

Thread.sleep() 方法可以让当前线程暂停执行指定的时间,但不释放锁。

Thread.sleep(1000); // 暂停1秒

LockSupport.park() 暂停线程

LockSupport.park() 方法可以暂停当前线程的执行,直到调用 unpark() 方法。

java如何等待

Thread thread = new Thread(() -> {
    LockSupport.park(); // 暂停线程
    // 被唤醒后继续执行
});
thread.start();
LockSupport.unpark(thread); // 唤醒线程

标签: java
分享给朋友:

相关文章

java如何创建线程

java如何创建线程

创建线程的方法 在Java中,创建线程主要有两种方式:继承Thread类和实现Runnable接口。以下是具体实现方法: 继承Thread类 通过继承Thread类并重写run()方法可以创建线程。…

如何打开java

如何打开java

打开 Java 程序的方法 通过命令行运行 Java 程序 确保已安装 Java Development Kit (JDK) 并配置环境变量。使用 javac 编译 .java 文件,生成 .clas…

java如何创建对象

java如何创建对象

创建对象的基本方法 在Java中,创建对象主要通过new关键字调用构造函数完成。基本语法为: ClassName objectName = new ClassName(); 例如创建String对象…

java如何输入数据

java如何输入数据

输入数据的方法 在Java中,输入数据可以通过多种方式实现,具体取决于输入来源(如控制台、文件、网络等)。以下是几种常见的方法: 使用Scanner类从控制台输入 Scanner类是Java中最常用…

java如何产生随机数

java如何产生随机数

使用 Math.random() 方法 Math.random() 生成一个范围在 [0.0, 1.0) 的伪随机 double 值。通过缩放和偏移可以生成指定范围的随机数。 double ra…

java如何打印数组

java如何打印数组

打印数组的方法 在Java中,打印数组有多种方式,以下是几种常见的方法: 使用Arrays.toString()方法 这种方法适用于一维数组,可以快速将数组转换为字符串形式输出: int[] a…