gpt4 book ai didi

java - 调用 FutureTask 的 run 方法时,如何消除 Sonar qube 问题?

转载 作者:行者123 更新时间:2023-11-30 06:11:34 26 4
gpt4 key购买 nike

我有以下代码,Sonar Qube 引发了严重错误。

public void onMessageReceived(Message message) {

if((message.getTargetInstanceId() != Message.ANY_TARGET) && (message.getTargetInstanceId() != this.instanceId)) {
//Invalid message ignore
return;
} else {
int randTime = ran.nextInt(2000);
FutureTask<Message> workerTask = new FutureTask<>(new DummyCommandHandler(randTime, message,messageBus,instanceId));
workerTask.run();
}


}

以下是我遇到的问题。

Description Assignee    Resource    New issue
Thread.run() and Runnable.run() should not be called directly : Call the method Thread.start() to execute the content of the run() method in a dedicated thread.

要调用FutureTask中的start方法,它本来就没有start方法。它只有一个运行方法。我怎样才能克服这个问题?是否有任何 Java 解决方案或 Sonarqube 解决方案?请指教。

最佳答案

SonarQube 是对的,你不应该直接调用futureTask.run()。改用 ExecutorService:

ExecutorService executor = Executors.newFixedThreadPool(1);
executor.execute(futureTask1);

This是关于该主题的简短而好的教程。

关于java - 调用 FutureTask 的 run 方法时,如何消除 Sonar qube 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33952500/

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