当前位置:首页 > 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()

JAVA如何设置暂停

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()方法,可以更灵活地控制线程的暂停和恢复。

JAVA如何设置暂停

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可以让一组线程互相等待,直到所有线程都到达屏障点。

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如何设置basepath

react如何设置basepath

在React中设置basePath React项目中的basePath通常用于指定应用的基础路径,特别是在部署到子目录时。以下是几种常见方法: 使用React Router设置basePath 在R…

react如何设置路由

react如何设置路由

在React中设置路由通常使用react-router-dom库,以下是具体实现方法: 安装react-router-dom 通过npm或yarn安装最新版本的react-router-dom:…

react框架如何设置404

react框架如何设置404

在React中设置404页面 在React应用中,404页面通常用于处理未定义的路由。可以通过React Router来实现这一功能。 安装React Router: npm install re…

react如何设置全局变量

react如何设置全局变量

在React中设置全局变量 React本身不提供全局变量的概念,但可以通过以下几种方式实现类似功能: 使用Context API 创建全局状态管理的最常见方法是使用React的Context API…

在react中如何设置路由

在react中如何设置路由

在 React 中设置路由 React 中通常使用 react-router-dom 库来实现路由功能。以下是设置路由的详细步骤。 安装 react-router-dom 确保项目已安装 react…