马士兵java架构师

您现在的位置是:java学习笔记 >

java学习笔记

java暂停、间隔、等待、延迟几秒执行

2023-11-17 16:43:54java学习笔记 本文浏览次数:1 百度已收录

本 文 目 录

在Java中,有几种方法可以延迟或定时执行代码:

java暂停、间隔、等待、延迟几秒执行

一、暂停几秒执行

  1. Thread.sleep(long millis): 这个方法可以让当前线程暂停指定的时间(以毫秒为单位)。这个方法通常用于让程序暂停一段时间,以便进行一些处理或者避免过快地执行某些操作。例如:
public class Main {
    public static void main(String[] args) {
        try {
            Thread.sleep(5000); // 暂停5秒
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("Five seconds have passed.");
    }
}

二、等待几秒执行

  1. Object.wait(long timeout): 这个方法可以让当前线程等待指定的时间(以毫秒为单位),直到另一个线程调用同一对象的 notify()notifyAll() 方法。这个方法通常用于实现线程间的通信。例如:
public class Main {
    public static void main(String[] args) {
        Object object = new Object();
        synchronized (object) {
            try {
                object.wait(5000); // 等待5秒
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("Five seconds have passed.");
    }
}

三、间隔几秒执行

  1. TimerTask.schedule(TimerTask task, long delay): 这个方法可以在指定的时间后执行一个任务。你可以使用 Timer 类创建一个定时器,然后使用 schedule() 方法安排任务在指定的时间后执行。例如:
import java.util.Timer;
import java.util.TimerTask;

public class Main {
    public static void main(String[] args) {
        Timer timer = new Timer();
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                System.out.println("Five seconds have passed.");
            }
        };
        timer.schedule(task, 5000); // 延迟5秒后执行任务
    }
}

三、延迟几秒执行

  1. ScheduledExecutorService.schedule(Runnable command, long delay, TimeUnit unit): 这个方法可以在指定的时间后执行一个任务。你可以使用 Executors.newScheduledThreadPool() 方法创建一个定时器,然后使用 schedule() 方法安排任务在指定的时间后执行。例如:
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class Main {
    public static void main(String[] args) {
        ScheduledExecutorService executor = Executors.newScheduledThreadPool();
        executor.schedule(() -> System.out.println("Five seconds have passed."), 5000, TimeUnit.MILLISECONDS); // 延迟5秒后执行任务
    }
}