Hilfe brauchen Rückgabe-Objekt im thread die run-Methode
Ich habe eine Java-Klasse, die Sie erweitert Thread
, es sieht im Grunde wie folgt aus:
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() {
...
}
}
Brauche ich die run()
- Methode zum zurückgeben einer ByteArrayOutputStream
oder eine String
. Jedoch, da es in der run()
Methode der Thread
ich kann nicht den Rückgabetyp der Methode, um ein ByteArrayOutputStream
oder eine String
.
Den HttpRequestDispatcher
Klasse ist aufgerufen, in einer Klasse namens OAuth.java.
Wie kann ich bekommen, um mit dieser situation?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es mehrere Lösungen für dieses problem:
Verwenden eine Datenstruktur, die extern zu dem Thread. Übergeben Sie das Objekt in den Konstruktor, und aktualisieren Sie es, wenn dein Thread fertig stellen.
Verwendung einer callback-Methode. Wenn der Thread abgeschlossen ist, rufen Sie die callback.
Nutzen
java.util.gleichzeitige.Zukunft
(Java >= 1.5):Lassen Sie es umsetzen
Callable<T>
stattThread
oderRunnable
. HierT
darstellen muss, die den Typ des Ergebnisses. VerwendenExecutorService
, um es auszuführen. Es gibt das Ergebnis in Geschmack einerZukunft<V>
.Hier ist ein SSCCE mit
String
alsT
nur copy ' N 'Paste' N ' Run es.HttpResponse
. Es wird immer einfach.