What's the best way to make a synchronous version of an asynchronous method in Java?

Say you have a class with these two methods:

asyncDoSomething(); // Starts an asynchronous task
onFinishDoSomething(); // Called when the task is finished 

How would you implement a synchronous doSomething() that does not return until the task is finished?

Edit
Report