Saya menggunakan jersey-client-3.0-SNAPSHOT.
Saya melakukan sesuatu seperti:
final Client client = createClient();
...
Builder builder = target.request();
for (final Entry<String, String> entry : getHeaders().entrySet()) {
builder = builder.header(entry.getKey(), entry.getValue());
}
final Builder finalBuilder = builder;
executor.submit(() -> {
final Entity<?> entity = createPostEntity();
futureResponse = finalBuilder.async().post(entity);
try {
response = futureResponse.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
consumeResponse(response);
} catch (ExecutionException | TimeoutException | InterruptedException | IOException e) {
errorConsumer.accept(e);
}
});
if (futureResponse != null) {
try {
futureResponse.cancel(true);
} catch (final Exception e) {
//does nothing, now we try keep closing resources
}
}
if (response != null) {
try {
response.close();
} catch (final Exception e) {
//does nothing, now we try keep closing resources
}
}
... //menunggu tanggapan dan membaca atau apa pun
client.close();
Dan thread baru terus muncul setiap kali membuat dan menghancurkan salah satu klien tersebut.
Apakah ada cara yang aman untuk menghancurkan thread tersebut? Apakah ini perilaku yang diharapkan? Apakah kamu melakukan sesuatu yang salah?