超时值为负

时间:2018-04-05 10:36:54

标签: java mysql

目前我正和另外两个人一起做项目,我们有一个MySQL线程需要睡一段时间才能使连接保持活动状态(游戏服务器)。

我们中的2个人一直收到以下错误:

  

线程“Thread-3”中的异常java.lang.IllegalArgumentException:超时值为负

我们项目的第三人没有这个问题。

由于以下行而发生错误:

00

如果相关,我正在使用JDK 1.8.0_111。

3 个答案:

答案 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是范围