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();
私はスレッドがスレッドプールで終了した理由を知りません...誰も同じ質問をしましたか?