INNER CODE UNIT · Java
cancelIfKilled
jolie/jolie · jolie/src/main/java/jolie/ExecutionThread.java:307
public synchronized void cancelIfKilled( Future< ? > f ) {
cleanFuturesToKill();
if( isKilled() ) {
f.cancel( true );
}
futureToCancel.add( new WeakReference<>( f ) );
}
private void cleanFuturesToKill() {
boolean keepAlive = true;
while( !futureToCancel.isEmpty() && keepAlive ) {
final WeakReference< Future< ? > > ref = futureToCancel.peek();
if( ref.get() == null ) {
futureToCancel.removeFirst();
} else {
keepAlive = false;
}
}