簡體   English   中英

ScheduledExecutorService每秒鍾運行一次

[英]ScheduledExecutorService To Run Every Few Seconds

我試圖使用ScheduledExecutorService在EJB中每隔幾秒鍾運行一次。 但是,它似乎確實起作用。 我不確定自己做錯了什么。 我找到了這個網站: http : //docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledExecutorService.html

我想每隔幾秒鍾運行一些代碼。 我不確定這是否是並發的,因為我只想在重復運行的一個線程上執行。 下面是代碼:

@Startup
@Singleton
public class StartUp {

    private ScheduledExecutorService executor;

    @PostConstruct
    public void start() {
         executor = Executors.newScheduledThreadPool(1);
         Runnable runnable = new Runnable() {
             public void run() {
                 while(true) {
                     System.out.println("i");
                     // after send an e-mail
                 }
             }
         };
         ScheduledFuture<?> scheduledFuture = executor.scheduleAtFixedRate(runnable, 0, 1, TimeUnit.SECONDS);
    }
}

這似乎沒有運行。 我究竟做錯了什么?

有任何想法嗎?

使用EJB時​​,您不應創建自己的線程池,而應讓容器為您完成。 您應該有類似以下內容:

@Singleton
public class TimerService {
    @EJB
    HelloService helloService;

    @Schedule(second="*/1", minute="*",hour="*", persistent=false)
    public void doWork(){
        System.out.println("timer: " + helloService.sayHello());
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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