簡體   English   中英

使用thread.sleep或delay的工作管理器不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM