0
爲了保持一個ApnsService活着,我創建了一個ThreadPoolExecutor來保持線程發送推送。 這裏是工人的代碼:JavaApns無法在ThreadPoolExecutor中使用?
公共靜態類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();
我不知道爲什麼線程終止在線程池...有沒有人有同樣的問題?