📜  等待随机时间java(1)

📅  最后修改于: 2023-12-03 15:27:25.203000             🧑  作者: Mango

Java中等待随机时间的实现方法

有些场景下,我们需要在程序中随机等待一段时间后再执行后续的操作,比如在爬虫中为了避免被反爬虫机制识别,我们可以在爬取网页后随机等待一段时间;或者在模拟用户行为时,我们也可能需要随机等待一段时间模拟用户的操作行为。本文将介绍在Java中实现等待随机时间的几种方法。

方法一:使用Thread.sleep()方法

使用Thread.sleep()方法可以让当前线程等待一段时间后再继续执行,我们可以将等待时间设置为随机数,从而实现随机等待的效果。

import java.util.Random;

public class RandomSleep {

    public static void main(String[] args) throws InterruptedException {
        Random random = new Random();
        int sleepTime = random.nextInt(5000) + 1000; // 生成1000ms到6000ms之间的随机数
        Thread.sleep(sleepTime);
        System.out.println("等待" + sleepTime + "ms后执行后续操作");
    }
}

注:Thread.sleep()方法需要抛出InterruptedException异常,所以在使用时需要处理异常。

方法二:使用ScheduledThreadPoolExecutor类

ScheduledThreadPoolExecutor类是Java中用于定时执行任务的工具类,我们可以用它来延时执行任务。同样可以将等待时间设置为随机数,从而实现随机等待的效果。

import java.util.Random;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class RandomDelay {

    public static void main(String[] args) {
        Random random = new Random();
        int delayTime = random.nextInt(5000) + 1000; // 生成1000ms到6000ms之间的随机数
        ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);
        executor.schedule(() -> {
            System.out.println("等待" + delayTime + "ms后执行后续操作");
            executor.shutdown();
        }, delayTime, TimeUnit.MILLISECONDS);
    }
}
方法三:使用java.util.Timer类

java.util.Timer类也是Java中用于定时执行任务的工具类,我们也可以用它来实现等待随机时间的效果。使用方法与ScheduledThreadPoolExecutor类类似,也可以将等待时间设置为随机数。

import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;

public class RandomTimer {

    public static void main(String[] args) {
        Random random = new Random();
        int delayTime = random.nextInt(5000) + 1000; // 生成1000ms到6000ms之间的随机数
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("等待" + delayTime + "ms后执行后续操作");
                timer.cancel();
            }
        }, delayTime);
    }
}

使用java.util.Timer类也需要注意在任务执行结束后及时取消Timer对象的任务,避免造成任务过多而影响性能。

以上就是在Java中实现等待随机时间的几种方法,可以根据具体情况选择最适合的方法。