当前位置:首页 > Java

JAVA如何设置暂停

2026-03-26 01:16:10Java

设置线程暂停

在Java中,可以使用Thread.sleep()方法让当前线程暂停执行一段时间。该方法接受一个以毫秒为单位的时间参数。

try {
    Thread.sleep(1000); // 暂停1秒
} catch (InterruptedException e) {
    Thread.currentThread().interrupt(); // 重新设置中断状态
    System.err.println("Thread interrupted");
}

使用TimeUnit进行更可读的暂停

TimeUnit类提供了更可读的方式来指定时间单位,如秒、分钟等。

try {
    TimeUnit.SECONDS.sleep(1); // 暂停1秒
} catch (InterruptedException e) {
    Thread.currentThread().interrupt();
    System.err.println("Thread interrupted");
}

使用Object.wait()实现条件暂停

Object.wait()方法可以让线程暂停,直到另一个线程调用notify()notifyAll()

synchronized (lockObject) {
    try {
        lockObject.wait(); // 暂停线程,等待通知
    } catch (InterruptedException e) {
        Thread.currentThread().interrupt();
        System.err.println("Thread interrupted");
    }
}

使用ScheduledExecutorService定时暂停

ScheduledExecutorService可以安排任务在指定的延迟后运行。

ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
executor.schedule(() -> {
    System.out.println("Task executed after delay");
}, 1, TimeUnit.SECONDS); // 1秒后执行
executor.shutdown();

使用LockSupport暂停线程

LockSupport类提供了park()unpark()方法,可以更灵活地控制线程的暂停和恢复。

Thread thread = new Thread(() -> {
    System.out.println("Thread is parking");
    LockSupport.park(); // 暂停线程
    System.out.println("Thread is unparked");
});
thread.start();

// 恢复线程
LockSupport.unpark(thread);

使用CountDownLatch同步暂停

CountDownLatch可以让线程等待,直到计数器减到零。

CountDownLatch latch = new CountDownLatch(1);
new Thread(() -> {
    try {
        latch.await(); // 暂停线程,直到计数器为零
        System.out.println("Thread resumed");
    } catch (InterruptedException e) {
        Thread.currentThread().interrupt();
    }
}).start();

// 恢复线程
latch.countDown();

使用CyclicBarrier同步暂停

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

JAVA如何设置暂停

CyclicBarrier barrier = new CyclicBarrier(2);
new Thread(() -> {
    try {
        System.out.println("Thread 1 waiting");
        barrier.await(); // 暂停线程,直到所有线程到达
        System.out.println("Thread 1 resumed");
    } catch (Exception e) {
        e.printStackTrace();
    }
}).start();

new Thread(() -> {
    try {
        System.out.println("Thread 2 waiting");
        barrier.await(); // 暂停线程,直到所有线程到达
        System.out.println("Thread 2 resumed");
    } catch (Exception e) {
        e.printStackTrace();
    }
}).start();

分享给朋友:

相关文章

react如何设置条件

react如何设置条件

条件渲染方法 在React中实现条件渲染可以通过多种方式实现,以下是几种常见的方法: 三元运算符 适用于简单的条件判断,语法紧凑但可读性较低: {isLoggedIn ? <LogoutBu…

react数据如何设置

react数据如何设置

设置React数据的常用方法 在React中,数据管理主要通过组件状态(state)和属性(props)实现,以下是几种核心方法: 使用useState钩子管理组件状态 适用于函数组件中的局部状态管…

react网络请求如何设置代理

react网络请求如何设置代理

在 React 中设置代理 React 项目中可以通过配置代理解决跨域问题,以下是常见的几种方法: 使用 create-react-app 的 proxy 配置 在 package.json 中直接…

react如何设置假的域名

react如何设置假的域名

设置本地开发环境假域名 在React开发中,可以通过修改本地hosts文件或配置开发服务器来实现假域名访问。以下是几种常见方法: 修改本地hosts文件 编辑系统hosts文件(路径:Windows…

react开发者工具如何设置

react开发者工具如何设置

安装React开发者工具 React开发者工具是浏览器扩展,支持Chrome、Firefox和Edge。访问浏览器的扩展商店(如Chrome Web Store或Firefox Add-ons),搜索…

java如何设置环境变量

java如何设置环境变量

设置Java环境变量的步骤 Windows系统 找到Java安装路径,通常位于C:\Program Files\Java\jdk版本号\bin。需要将该路径添加到系统的环境变量中。 右键点击“此电…