2014-05-19 7 views
0

EJB에서 몇 초마다 실행되도록 ScheduledExecutorService를 사용하려고합니다. 그러나, 그것은 작동하는 것 같습니다. 내가 잘못된 일을하고 있는지 확실하지 않습니다. 이 웹 사이트는 http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledExecutorService.html입니다.ScheduledExecutorService가 몇 초마다 실행되도록

몇 초마다 코드를 실행하고 싶습니다. 내가 반복적으로 실행되는 하나의 스레드에서만 실행되기 때문에 이것이 동시성인지 여부는 확실하지 않습니다. 아래는 코드입니다.

@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); 
    } 
} 

이것은 실행되지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

아이디어가 있으십니까?

+0

수백만 초 ('new Date(). getTime()')의 초기 지연을 구성한 다음 실행을 취소하기 전에 작업을 취소하려고합니다. –

+0

작업을 즉시 시작한 다음 1 초마다 repedately 실행하고 싶습니다. 취소 방법을 꺼내겠습니다. 새로운 Date(). getTime() 대신에 무엇을 추가해야합니까? – user3189663

+0

'executor.scheduleAtFixedRate (실행 가능, 0, 1, TimeUnit.SECONDS); ' –

답변

3

EJB를 사용할 때 자신 만의 스레드 풀을 생성해서는 안되지만 컨테이너가 대신 수행하게하십시오.

관련 문제