gpt4 book ai didi

Java线程: start and sleep threads at random time

转载 作者:行者123 更新时间:2023-12-02 05:41:43 25 4
gpt4 key购买 nike

我正在尝试用java制作一个服务器客户端套接字程序(TCP)。在我的客户端程序中,我创建了 10 个线程,这 10 个线程将充当单独的客户端,当它运行时,它会连接到服务器端的套接字。

现在,我希望线程应该在随机时间启动,然后在随机时间进入休眠状态,然后再次从 sleep 状态恢复。这种随机化是因为我在本地主机上运行客户端和服务器程序,所以我希望线程的行为应该像有许多用户在任何时刻访问单个服务器(就像我们有谷歌)一样。

我对此没有任何解决方案...请帮助我并建议我可以尝试的东西。

我尝试过 TimerTimerTask 类...但它不能满足我的需求..Timer 类按顺序执行分配的任务..不是随机的方式..

有什么解决方案可以代替TimerTimerTask吗?

最佳答案

您可以使用 scheduled executor具有固定的线程池大小,在随机时间 hibernate 并最初在随机时间启动:

import java.util.Random;
import java.util.concurrent.*;

public class Client{
private final static ScheduledExecutorService executor = Executors.newScheduledThreadPool(10);

public static void main(String[] args) {
final Random random = new Random();
final long maxSleepTime=2000L;
for (int i = 0; i < 10; i++) {
int randomSleepTime = random.nextInt((int) maxSleepTime);
Runnable command=new Runnable() {
@Override public void run() {
//code to run, e.g. call a server method
}
};
executor.scheduleAtFixedRate(command,randomSleepTime,randomSleepTime, TimeUnit.MILLISECONDS);
}
}
}

关于Java线程: start and sleep threads at random time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24451052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com