为了保持一个ApnsService的活力,我创建了一个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 =新PushWorker(服务、令牌、警报、徽章、null);
worker.run();
我不知道为什么线程被终止在线程池中。有谁有同样的问题吗?
发布于 2012-03-14 09:23:07
试着使用
try {
Future result = pool.submit(worker)
result.get()
} catch (ExecutionException e) {
// actual exception in e.getCause()
}相反,
https://stackoverflow.com/questions/9698785
复制相似问题