我使用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"));
}
}
提前非常感谢。 的问候,
卡利尔
答案 0 :(得分:0)
好吧,线程会等待2小时以上。你真的等了很长时间才完成部署吗?
[编辑]你可能在错误的地方做等待:你应该等待线程的run()
方法,而不是类的构造函数。