[英]Work manager using thread.sleep or delay doesn't work
我使用Spring框架和oracle weblogic 10.3作為容器。 我使用workmanager來管理我的線程,我已經制作了一個由workmanager管理的線程。 幸運的是spring提供了使用workmanager的委托類,因此我只需要將其放在applicationContext.xml即可。
但是,當我將“ while”和TimeUnit放入所需的延遲時間使進程進入睡眠狀態時,部署過程從未完成。 似乎部署過程從不會從while循環中跳出來完成部署。
為什么?,據我所知,使用典型的線程不會出現這樣的問題。 我是否應該使用其他策略使其始終循環和延遲。
import java.util.concurrent.TimeUnit;
import org.springframework.core.task.TaskExecutor;
public class TaskExecutorSample{
Boolean shutdown = Boolean.FALSE;
int delay = 8000;
TimeUnit unit = TimeUnit.SECONDS;
private class MessageGenerator implements Runnable {
private String message;
public MessageGenerator(String message){
this.message = message;
}
@Override
public void run() {
System.out.println(message);
}
}
private TaskExecutor taskExecutor;
public TaskExecutorSample(TaskExecutor taskExecutor){
this.taskExecutor = taskExecutor;
try {
while (shutdown.equals(Boolean.FALSE)){
this.printMessage();
unit.sleep(delay);
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public void printMessage() {
taskExecutor.execute(new MessageGenerator("Print this Messages"));
}
}
真的非常感謝。 問候,
卡里爾
好了,線程將等待超過2小時。 您真的等待了這么長時間才能完成部署嗎?
[編輯]您可能在錯誤的地方進行了等待:您應該在線程的run()
方法中等待,而不是在類的構造函數中等待。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.