2010-05-26 131 views
0

我使用Spring框架和oracle weblogic 10.3作为容器。 我用workmanager来管理我的线程,我已经做了一个由workmanager管理的线程。幸运的是,spring提供了使用workmanager的委托类,所以我只需要将它放在applicationContext.xml上。使用thread.sleep或延迟的工作管理器不起作用

但是当我把“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

好了,该线程将等待超过2h多一点。你真的等了很长时间才能完成部署?

[编辑]你可能在错误的地方等待:你应该等待线程的run()方法,而不是类的构造函数。

+0

对不起,实际上我已经设置了延迟时间只有10秒,它也不起作用,这个过程总是每10秒循环一次,但发布状态永远不会结束。上面的代码是我最后一次修改,我放慢了寻求另一种可能性的延迟。 – 2010-05-26 09:24:43

+0

什么是完全荒谬的错位,你是对的!,我已经把它运行(),它运作良好。 – 2010-05-27 09:27:02