当前位置:首页 > 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 版本的方法 通过命令行工具 打开终端(Windows 为命令提示符或 PowerShell,macOS/Linux 为 Terminal),输入以下命令并回车: java -ve…

java如何删除文件

java如何删除文件

删除文件的基本方法 使用 java.io.File 类的 delete() 方法可以删除文件。如果文件存在且删除成功,返回 true;否则返回 false。 import java.io.Fil…

如何运行java项目

如何运行java项目

运行Java项目的步骤 确保Java环境已安装 在运行Java项目前,需确认系统已安装Java Development Kit(JDK)。通过命令行输入java -version和javac -ver…

java如何处理高并发

java如何处理高并发

Java处理高并发的方法 使用多线程和线程池 Java的java.util.concurrent包提供了线程池(如ThreadPoolExecutor)和并发工具类(如CountDownLatch、C…

如何搭建java开发环境

如何搭建java开发环境

下载并安装JDK 从Oracle官网或OpenJDK下载适合操作系统的JDK版本。运行安装程序并按照提示完成安装,建议选择默认路径以减少配置复杂度。 配置环境变量 在系统环境变量中添加JAVA_HO…

java如何实现多继承

java如何实现多继承

在Java中,由于语言设计本身不支持多继承(即一个类不能直接继承多个父类),但可以通过以下方式间接实现类似多继承的效果: 使用接口实现多继承 接口允许一个类实现多个接口,从而继承多个抽象行为。接口中…