Java appel de méthode asynchrone
J'ai déjà un thread qui a aux travaux suivants:
public class DetectionHandler extends TimerTask {
@Override
public void run() {
bluetoothAddresses = BluetoothModule.scanAddresses();
wiFiAddresses = WiFiModule.scanAddresses();
...//when scanning is finished, continue work
}
Je voudrais que la numérisation d'être parallèles. Donc je suppose que je dois les appeler que deux méthodes de façon asynchrone. Et lorsque la numérisation est terminée, alors je peux continuer à travailler dans DetectionHandler classe.
J'ai essayé de la façon que BluetoothModule et WiFiModule implements Runnable mais pas eu de chance. Tnx
OriginalL'auteur vale4674 | 2010-10-23
Vous devez vous connecter pour publier un commentaire.
À l'aide de ExecutorService vous pouvez écrire quelque chose comme ceci:
OriginalL'auteur Eugene Kuleshov
Obtenir un ExecutorService de Les exécuteurs et de lui donner un FutureTask.
Vous pouvez ensuite attendre les résultats en appelant le blocage get() sur le retour de l'Avenir. Les analyses parallèles, mais votre méthode run (montré ici) va encore attendre pour les scans d'être terminé.
Un peu comme:
Attention cependant, obtenir va retourner tout appel renvoie. Les Exceptions sont enveloppés dans une ExecutionException.
Si vous décidez de jouer avec les fils et démarrer le partage de données entre les threads, je heartilly recommandons javaconcurrencyinpractice.com (le livre). À l'aide de threads peut avoir des résultats étranges lorsqu'il n'est pas prudent. Pas un problème dans ce cas, bien sûr.
OriginalL'auteur extraneon