Besoin d'aide pour le retour de l'objet dans la méthode run du thread
J'ai une classe Java qui étend Thread
, il ressemble fondamentalement à la suivante:
public class HttpRequestDispatcher extends Thread {
private String url;
private String method; //GET or POST
private byte[] postData;
public HttpRequestDispatcher(String url, String method, byte[] postData) {
this.url = url;
this.method = method;
this.postData = postData;
}
public HttpRequestDispatcher(String url, String method) {
this.url = url;
this.method = method;
}
public void run() {
...
}
}
J'ai besoin de la run()
méthode pour renvoyer une ByteArrayOutputStream
ou un String
. Cependant, parce qu'il est dans le run()
méthode de la Thread
, je ne peux pas définir le type de retour de la méthode à une ByteArrayOutputStream
ou un String
.
La HttpRequestDispatcher
classe est appelée à l'intérieur d'une classe appelée OAuth.java.
Comment puis-je obtenir autour de cette situation?
OriginalL'auteur littleK | 2010-02-19
Vous devez vous connecter pour publier un commentaire.
Il existe plusieurs solutions à ce problème:
Utiliser une structure de données externes sur le Fil. Passer l'objet dans votre constructeur et le mettre à jour, quand votre fils est sur le point de terminer.
Utiliser une méthode de rappel. Lorsque votre Thread termine, appeler la fonction de rappel.
Faire usage d'un
java.util.de façon concomitante.L'avenir
(Java >= 1.5):Vous pourriez, par exemple, de définir des rappels dans OAuth.java. Passer le OAuth objet vers le bas sur le Fil. Ensuite, selon le résultat, appeler le callback. La fonction de rappel pourrait accepter "l'expéditeur" comme l'un des paramètres, si vous avez besoin pour l'expédition de plusieurs Threads pour différentes actions. C'est juste une idée ..
OriginalL'auteur miku
Laisser mettre en œuvre
Appelable<T>
au lieu deThread
ouRunnable
. IciT
doit représenter le type de résultat. UtilisationExecutorService
pour l'exécuter. Il sera de retour le résultat dans la saveur d'unAvenir<V>
.Voici un SSCCE avec
String
commeT
, il suffit de copier "" coller'n'run.Le rendre abstrait et le nom qu'il
HttpResponse
. Il deviendra plus simple.OriginalL'auteur BalusC