Java est en effet plus bas niveau que ActionScript. C'est comme comparer des pommes avec des oranges. Tout en ActionScript gère tout cela de manière transparente "sous le capot", en Java, vous devez gérer le traitement asynchrone (threading) de vous-même.
Heureusement, en Java il y a l' java.util.concurrent
API qui peut faire de bien belle manière.
Votre problème peut être résolu comme suit:
// Have one (or more) threads ready to do the async tasks. Do this during startup of your app.
ExecutorService executor = Executors.newFixedThreadPool(1);
// Fire a request.
Future<Response> response = executor.submit(new Request(new URL("http://google.com")));
// Do your other tasks here (will be processed immediately, current thread won't block).
// ...
// Get the response (here the current thread will block until response is returned).
InputStream body = response.get().getBody();
// ...
// Shutdown the threads during shutdown of your app.
executor.shutdown();
où Request
et Response
se présenter comme suit:
public class Request implements Callable<Response> {
private URL url;
public Request(URL url) {
this.url = url;
}
@Override
public Response call() throws Exception {
return new Response(url.openStream());
}
}
et
public class Response {
private InputStream body;
public Response(InputStream body) {
this.body = body;
}
public InputStream getBody() {
return body;
}
}
Voir aussi: