2012-03-14 4 views
0

1つのApnsServiceを有効に保つために、ThreadPoolExecutorを作成して、プッシュを送信するスレッドを保持しました。ここ は、労働者のコードです:私は労働者を作成し、スレッドプールでそれを実行するとJavaApnsはThreadPoolExecutorで動作しませんか?

のpublic staticクラス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); 

    } 
} 

を実装します。

ThreadPoolExecutorプール=て、新しいThreadPoolExecutor(corePoolSize 、maximumPoolSize、keepAliveTime、TimeUnit.SECONDS、queue);

pool.execute(worker);

プログラムが終了しました:PayloadBuilder payloadBuilder = APNS.newPayload();エラーや例外は発生しません。しかし、以下のようにしても動作します。

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

worker.run();

私はスレッドがスレッドプールで終了した理由を知りません...誰も同じ質問をしましたか?

答えて

0

ではなく

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

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

を使用してみてください
関連する問題