Чтобы поддержать один ApnsService, я создал ThreadPoolExecutor для хранения потоков для отправки push.Вот код работника:
открытый статический класс 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 pool = новый ThreadPoolExecutor (corePoolSize, MaximumPoolSize, keepAliveTime, TimeUnit.SECONDS, queue);
pool.execute (работник);
программа былазаканчивается в: PayloadBuilder payloadBuilder = APNS.newPayload ();и без каких-либо ошибок или исключений.Но это может работать, если указано ниже:
PushWorker worker = новый PushWorker (служба, токен, предупреждение, значок, ноль);
работник.run ();
Я не знаю, почему поток был прерван в пуле потоков ... У кого-нибудь был такой же вопрос?