Java 使用thread.sleep或delay的工作经理不';行不通
我使用Spring框架和OracleWebLogic10.3作为容器。 我使用workmanager管理我的线程,我已经制作了一个由workmanager管理的线程。幸运的是,spring为使用workmanager提供了委托类,所以我只需要将其放在applicationContext.xml上 但是,当我将睡眠过程的“while”和时间单位设置为所需的延迟时间时,部署过程从未完成。部署过程似乎永远不会跳出while循环来完成部署 为什么?正如我所知道的,使用典型的线程,不存在这样的问题。我是否应该使用另一种策略使其始终循环和延迟Java 使用thread.sleep或delay的工作经理不';行不通,java,oracle,spring,weblogic,Java,Oracle,Spring,Weblogic,我使用Spring框架和OracleWebLogic10.3作为容器。 我使用workmanager管理我的线程,我已经制作了一个由workmanager管理的线程。幸运的是,spring为使用workmanager提供了委托类,所以我只需要将其放在applicationContext.xml上 但是,当我将睡眠过程的“while”和时间单位设置为所需的延迟时间时,部署过程从未完成。部署过程似乎永远不会跳出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"));
}
}
真的,先谢谢你。
问候,
Kahlil嗯,线程将等待2小时多一点。您真的等了那么久才完成部署吗
[编辑]您可能在错误的位置等待:您应该在线程的
run()
方法中等待,而不是在类的构造函数中等待。对不起,实际上我已经将延迟设置为仅10秒,它也不起作用,进程总是每10秒循环一次,但发布状态从未完成。上面的代码是我最后一次修改,为了寻找另一种可能性,我增加了延迟。这是一个多么可笑的错误,你说得对!,我已经开始运行(),它运行得很好。