public interface Callback { void completed(); } public class AsynchronousTask extends Thread { private Callback callback; private int result; public AsynchronousTask(final Callback callback){ this.callback = callback; } @Override public void run() { try { //Do some "work" sleep(5); result = 42; } catch (InterruptedException ex) { } callback.completed(); } public int getResult() { return result; } }