ExecutionCallback
allows you to asynchronously get notified when the execution is done.
When implementing
ExecutionCallback.done(Future)
method, you can check if the task is
already cancelled.
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.ExecutionCallback;
import com.hazelcast.core.DistributedTask;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
ExecutorService es = Hazelcast.getExecutorService();
DistributedTask<String> task = new DistributedTask<String>(new Fibonacci<Long>(10));
task.setExecutionCallback(new ExecutionCallback<Long> () {
public void done (Future<Long> future) {
try {
if (! future.isCancelled()) {
System.out.println("Fibonacci calculation result = " + future.get());
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
es.execute(task);
You could have achieved the same results by extending
DistributedTask
and overriding the
DistributedTask.done()
method.
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.DistributedTask;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
ExecutorService es = Hazelcast.getExecutorService();
es.execute(new DistributedTask<String>(new Fibonacci<Long>(10)) {
public void done () {
try {
if (! isCancelled()) {
System.out.println("Fibonacci calculation result = " + get());
}
} catch (Exception e) {
e.printStackTrace();
}
}
});