目前我正和另外两个人一起做项目,我们有一个MySQL线程需要睡一段时间才能使连接保持活动状态(游戏服务器)。
我们中的2个人一直收到以下错误:
线程“Thread-3”中的异常java.lang.IllegalArgumentException:超时值为负
我们项目的第三人没有这个问题。
由于以下行而发生错误:
00
如果相关,我正在使用JDK 1.8.0_111。
答案 0 :(得分:1)
尝试使用:
Thread.sleep(Math.max(0, 5000 - (System.currentTimeMillis() - start_time)));
答案 1 :(得分:0)
您可以使用absolute value。这样你就永远不会有负面价值。
Thread.sleep(Math.abs(5000 - (System.currentTimeMillis() - start_time)));
答案 2 :(得分:0)
显然,你为睡眠产生时间的计算是否定的,因此它显示了这个错误。
如果你想使用这个计算,那么我会使用支持负值的TimeUnit
。
TimeUnit.MILLISECONDS.sleep(5000 - (System.currentTimeMillis() - start_time));
如果你想睡一段时间我会建议使用随机来产生睡眠时间
int delay = new Random().nextInt(maxMili - minMili) + minMili;
System.out.println(String.format("Sleeping for %d milliseconds", delay));
Thread.sleep(delay);
此处maxMili和minMili是范围