gpt4 book ai didi

java - scheduleAtFixedRate 方法上的 IllegalArgumentException

转载 作者:行者123 更新时间:2023-11-29 08:36:25 25 4
gpt4 key购买 nike

Runnable runPickWinner = new Runnable() {
@Override
public void run() {
mPot.pickWinner();
}
};
ScheduledExecutorService execPickWinner = Executors.newScheduledThreadPool(1);
execPickWinner.scheduleAtFixedRate(runPickWinner, runPickWinnerTime.longValue(), runPickWinnerTime.longValue(), TimeUnit.MINUTES);

我收到以下错误:

java.lang.IllegalArgumentException
at java.util.concurrent.ScheduledThreadPoolExecutor.scheduleAtFixedRate(Unknown Source) ~[?:1.8.0_131]
at com.tchristofferson.Lottery.runLottery(Lottery.java:223) ~[?:?]
at com.tchristofferson.Lottery.onEnable(Lottery.java:50) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:271) ~[craftbukkit.jar:git-Bukkit-c19c293]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:329) [craftbukkit.jar:git-Bukkit-c19c293]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:404) [craftbukkit.jar:git-Bukkit-c19c293]
at org.bukkit.craftbukkit.v1_11_R1.CraftServer.enablePlugin(CraftServer.java:361) [craftbukkit.jar:git-Bukkit-c19c293]
at org.bukkit.craftbukkit.v1_11_R1.CraftServer.enablePlugins(CraftServer.java:323) [craftbukkit.jar:git-Bukkit-c19c293]
at net.minecraft.server.v1_11_R1.MinecraftServer.t(MinecraftServer.java:411) [craftbukkit.jar:git-Bukkit-c19c293]
at net.minecraft.server.v1_11_R1.MinecraftServer.l(MinecraftServer.java:372) [craftbukkit.jar:git-Bukkit-c19c293]
at net.minecraft.server.v1_11_R1.MinecraftServer.a(MinecraftServer.java:327) [craftbukkit.jar:git-Bukkit-c19c293]
at net.minecraft.server.v1_11_R1.DedicatedServer.init(DedicatedServer.java:244) [craftbukkit.jar:git-Bukkit-c19c293]
at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:521) [craftbukkit.jar:git-Bukkit-c19c293]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_131]

它似乎是 scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) 上的一个错误,但它没有任何意义 它们是 Integer 类型,但后来我调用了 longValue() 应该把它们变成一个 long。我只是通过在它们中硬编码一个值来使它工作,例如,如果我使用 10L 或仅使用 10,它就可以工作,但这不会。

最佳答案

检查您正在使用的方法的 Java 实现,即 ScheduledThreadPoolExecutor.scheduleAtFixedRate

public ScheduledFuture<?> scheduleAtFixedRate(Runnable command,
long initialDelay,
long period,
TimeUnit unit) {
if (command == null || unit == null)
throw new NullPointerException();
if (period <= 0)
throw new IllegalArgumentException();
RunnableScheduledFuture<?> t = decorateTask(command,
new ScheduledFutureTask<Object>(command,
null,
triggerTime(initialDelay, unit),
unit.toNanos(period)));
delayedExecute(t);
return t;
}

异常IllegalArgumentExceptionperiod <= 0 时抛出,所以基本上你正在传递 runPickWinnerTime.longValue()小于 0,即该方法的第三个参数小于 0,而它不应该小于 0。

当您进行硬编码时,您就是在硬编码正确的值,但是当您使用 runPickWinnerTime.longValue() 时那么它不是,所以你需要创建runPickWinnerTime大于 0,你应该为你的 initialDelay 使用不同的对象和 period ,我看到您使用的是相同的,这会导致您出现意外问题。

关于java - scheduleAtFixedRate 方法上的 IllegalArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43827415/

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