import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
class Demo {
CompletableFuture<Integer> sharedFuture = new CompletableFuture<>();
int value = 1;
try {
while (!Thread.
currentThread().
isInterrupted() && !sharedFuture.isDone()) {
value = value * 32 + 7;
}
sharedFuture.completeExceptionally(t);
} finally {
// has no effect if already completed.
sharedFuture.complete(value);
}
});
computing.start();
try {
}
computing.interrupt();
System.
out.
println(sharedFuture.
get()); }
}
aW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LkNvbXBsZXRhYmxlRnV0dXJlOwppbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0aW9uRXhjZXB0aW9uOwoKY2xhc3MgRGVtbyB7CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEludGVycnVwdGVkRXhjZXB0aW9uLCBFeGVjdXRpb25FeGNlcHRpb24gewoKICAgICAgICBDb21wbGV0YWJsZUZ1dHVyZTxJbnRlZ2VyPiBzaGFyZWRGdXR1cmUgPSBuZXcgQ29tcGxldGFibGVGdXR1cmU8PigpOwoKICAgICAgICBUaHJlYWQgY29tcHV0aW5nID0gbmV3IFRocmVhZCgoKSAtPiB7CiAgICAgICAgICAgIGludCB2YWx1ZSA9IDE7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICB3aGlsZSAoIVRocmVhZC5jdXJyZW50VGhyZWFkKCkuaXNJbnRlcnJ1cHRlZCgpICYmCiAgICAgICAgICAgICAgICAgICAgICAgICFzaGFyZWRGdXR1cmUuaXNEb25lKCkpIHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlICogMzIgKyA3OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgdCkgewogICAgICAgICAgICAgICAgc2hhcmVkRnV0dXJlLmNvbXBsZXRlRXhjZXB0aW9uYWxseSh0KTsKICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgIC8vIGhhcyBubyBlZmZlY3QgaWYgYWxyZWFkeSBjb21wbGV0ZWQuCiAgICAgICAgICAgICAgICBzaGFyZWRGdXR1cmUuY29tcGxldGUodmFsdWUpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgY29tcHV0aW5nLnN0YXJ0KCk7CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgIFRocmVhZC5zbGVlcCgobG9uZykgKDUwMDAgKiBNYXRoLnJhbmRvbSgpKSk7CiAgICAgICAgfSBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gaWdub3JlZCkgewogICAgICAgIH0KCiAgICAgICAgY29tcHV0aW5nLmludGVycnVwdCgpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzaGFyZWRGdXR1cmUuZ2V0KCkpOwogICAgfQp9Cg==