Java 暂停代码的全面指南301


在 Java 编程中,暂停代码是一种常见的需求,可以帮助您调试程序、等待输入或让程序休眠一段时间。本文将深入探讨 Java 中暂停代码的不同方法,从简单的阻塞方法到更高级的并行技术。

1. ()

最简单的方法是使用 () 方法,它可以暂停当前线程指定的时间(以毫秒为单位)。例如:```java
try {
(1000); // 暂停 1 秒
} catch (InterruptedException e) {
// 处理中断异常
}
```

2. () 和 notify()

Object 类提供了 wait() 和 notify() 方法,可以实现线程间通信。wait() 方法使线程进入等待状态,直到被其他线程调用 notify() 方法唤醒。例如:```java
public class ObjectWaitExample {
private Object lock = new Object();
public void waitThread() {
synchronized (lock) {
try {
(); // 进入等待状态
} catch (InterruptedException e) {
// 处理中断异常
}
}
}
public void notifyThread() {
synchronized (lock) {
(); // 唤醒等待线程
}
}
}
```

3. CountDownLatch

CountDownLatch 是一个并发工具,允许多个线程等待一组特定事件的完成。每个线程调用 () 来减少计数,当计数变为 0 时,所有等待的线程将被唤醒。例如:```java
public class CountDownLatchExample {
private CountDownLatch latch = new CountDownLatch(3);
public void startThreads() {
// 创建并启动 3 个线程
for (int i = 0; i < 3; i++) {
new Thread(() -> {
try {
(1000); // 模拟任务
} catch (InterruptedException e) {
// 处理中断异常
} finally {
(); // 任务完成后减少计数
}
}).start();
}
}
public void waitThreads() {
try {
(); // 等待计数变为 0
} catch (InterruptedException e) {
// 处理中断异常
}
}
}
```

4. Semaphore

Semaphore 是另一个并发工具,允许限制特定资源同时被访问的线程数。() 方法阻塞线程直到可以获得许可,而 () 方法释放许可。例如:```java
public class SemaphoreExample {
private Semaphore semaphore = new Semaphore(3);
public void acquireSemaphore() {
try {
(); // 阻塞线程直到可以获得许可
} catch (InterruptedException e) {
// 处理中断异常
}
}
public void releaseSemaphore() {
(); // 释放许可
}
}
```

5. ()

可以使用 () 创建一个计划任务池,允许您安排在特定时间或时间间隔执行任务。例如:```java
public class ScheduledThreadPoolExample {
public static void main(String[] args) {
ScheduledExecutorService executor = (1);
(() -> {
("任务已执行");
}, 5, ); // 5 秒后执行任务
(); // 停止执行器
}
}
```

通过掌握这些方法,您可以灵活地暂停 Java 代码,满足各种编程需求。请务必仔细考虑每个方法的优点和缺点,并选择最适合您特定用例的方法。

2024-11-06


上一篇:Java 数组与 Map:高级数据结构浅析

下一篇:Java轻松将数据导入Excel中