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