2012-03-14 4 views
0

하나의 ApnsService를 유지하려면 Thread를 푸시하도록 PushPoolExecutor를 만들었습니다.JavaApns가 ThreadPoolExecutor에서 작동하지 않습니까?

있는 ThreadPoolExecutor 풀 = 사용해, 새로운 ThreadPoolExecutor (corePoolSize를 :

공공 정적 클래스 PushWorker가의 Runnable {

난 노동자를 생성하고 스레드 풀에서 실행
private static final Logger log = Logger.getLogger(PushWorker.class); 

    private String token; 
    private String alert; 
    private int badge; 
    private String sound; 
    private ApnsService service; 

    public PushWorker(ApnsService srv, String t, String a, int b, String s){ 
     token = t; 
     alert = a; 
     badge = b; 
     sound = s; 
     service = srv; 
    } 
    @Override 
    public void run() { 


     PayloadBuilder payloadBuilder = APNS.newPayload(); 
     payloadBuilder.sound(sound); 
     payloadBuilder.badge(badge); 

     payloadBuilder.alertBody(alert); 


     String payload = payloadBuilder.build(); 
        service.push(token, payload); 

    } 
} 

를 구현 : 여기 작업자의 코드 , maximumPoolSize, keepAliveTime, TimeUnit.SECONDS, queue);

pool.execute (worker);

프로그램이 다음에서 종료되었습니다. PayloadBuilder payloadBuilder = APNS.newPayload(); 오류나 예외가 발생하지 않습니다. 그러나 아래의 방법으로 작동하는 경우 작동 할 수 있습니다.

PushWorker worker = new PushWorker (service, token, alert, badge, null);

worker.run();

스레드가 Threadpool에서 종료 된 이유를 모르겠다. 누구 한테 같은 질문이 있습니까?

답변

0

시도 대신

try { 
    Future result = pool.submit(worker) 
    result.get() 

} catch (ExecutionException e) { 
    // actual exception in e.getCause() 
} 

를 사용하여
관련 문제