Ich benutze Jersey-Client-3.0-SNAPSHOT.JerseyClient async Anrufe scheint hängende Themen zu verlassen
ich so etwas wie:
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
}
}
... // für Antworten warten und lesen oder was auch immer
client.close();
Und ein neuer Thread hält Jedes Mal, wenn Sie einen dieser Clients erstellen und zerstören.
Gibt es eine sichere Möglichkeit, diese Threads zu zerstören? Ist das ein erwartetes Verhalten? Bin etwas falsch gemacht?