import java.util.concurrent.CompletableFuture ;
import java.util.concurrent.ExecutionException ;
class Ideone {
Thread .
currentThread ( ) .
interrupt ( ) ;
try {
CompletableFuture.runAsync ( ( ) -> interruptibleComputation( ) )
.
whenComplete ( ( r, t
) -> System .
out .
println ( "foo" ) ) .
get ( ) ; }
finally {
// Prevent the JVM from terminating immediately (which would release the resources anyway
}
}
static void interruptibleComputation( ) {
try {
// will never happen, as CompletableFuture does not support interruption
ex.printStackTrace ( ) ;
}
}
}
CmltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5Db21wbGV0YWJsZUZ1dHVyZTsKaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dGlvbkV4Y2VwdGlvbjsKCmNsYXNzIElkZW9uZSB7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5pbnRlcnJ1cHQoKTsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgQ29tcGxldGFibGVGdXR1cmUucnVuQXN5bmMoKCkgLT4gaW50ZXJydXB0aWJsZUNvbXB1dGF0aW9uKCkpCiAgICAgICAgICAgICAgICAud2hlbkNvbXBsZXRlKChyLCB0KSAtPiBTeXN0ZW0ub3V0LnByaW50bG4oImZvbyIpKS5nZXQoKTsKICAgICAgICB9CiAgICAgICAgZmluYWxseSB7CiAgICAgICAgICAgIC8vIFByZXZlbnQgdGhlIEpWTSBmcm9tIHRlcm1pbmF0aW5nIGltbWVkaWF0ZWx5ICh3aGljaCB3b3VsZCByZWxlYXNlIHRoZSByZXNvdXJjZXMgYW55d2F5CiAgICAgICAgICAgIFRocmVhZC5zbGVlcCg0MDAwKTsKICAgICAgICB9CiAgICAgICAgCiAgICB9CgogICAgc3RhdGljIHZvaWQgaW50ZXJydXB0aWJsZUNvbXB1dGF0aW9uKCkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIFRocmVhZC5zbGVlcCgzMDAwKTsKICAgICAgICB9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBleCkgewogICAgICAgICAgICAvLyB3aWxsIG5ldmVyIGhhcHBlbiwgYXMgQ29tcGxldGFibGVGdXR1cmUgZG9lcyBub3Qgc3VwcG9ydCBpbnRlcnJ1cHRpb24KICAgICAgICAgICAgZXgucHJpbnRTdGFja1RyYWNlKCk7CiAgICAgICAgfQogICAgfQp9