FutureTask in Android, wait for a thread to execute the next one
There is no need for the FutureTask, the executor service will create a future that you can use to wait on the task and get the result (if any).

executor.submit(futureWifiInfo).get();


This is basically the same as just calling futureWifiInfo.run(); (or call) In other words you aren't quite there yet with making this properly asynchronous.

It does let you set a timeout on the get simply by adding the timeout parameters:

Future&lt;String&gt; futureWifiInfo = executor.submit(wifiInfo);
try {
    futureWifiInfo.get(1, TimeUnit.SECONDS);
    executor.submit(scanResults);

} catch (TimeoutException e) {
    // get timed out -&gt; cancel it
    futureWifiInfo.cancel(true);

} catch (InterruptedException e) {
    e.printStackTrace();
} catch (ExecutionException e) {
    e.printStackTrace();
}