String zurück liefern !

  • Themenstarter Themenstarter knopper
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
K

knopper

Gast
Hi,
Ich habe folgendes Codsegment:

Code:
private void startClient(String name) {
  		
  		new Thread(name) {
  			
  			public void run() {
  				while (true) {
  					try {
  		    		    semaphore.acquire();
 						try {
 		 		 	sockout.write(this.getName());
 		 		 	sockout.flush();
 		 			} catch (Exception e) {
 		 		 	e.printStackTrace();
 						}
 		 			String str = "";
 						try {
 		 		 	byte[] bline = new byte[6048];
 		 		 	sockin.read(bline);
 		 		 	str = new String(bline); // soll sofort zurueck gegeben werden
 		 			} catch (Exception e) {
 		 		 	e.printStackTrace();
 						}
  
 		 			sleep(1000L + (long) (1000L * Math.random()));
  
  		    		    semaphore.release();
 					} catch (Exception e) {
  		    		    e.printStackTrace();
  					}
  				}
  			}
  		}.start();
  	}

Was ich machen wollte ist die Methode startClient mit einem String als Rückgabewert(new String(bline) umzuschreiben.
Der Thread ist aber eine eigene Klasse. Wie kann ich dieses Problem umgehen.

z.B. so soll es aufgerufen werden:
System.out.println(startClient("socket_command"));

gruss
 
Wenn "startClient" das Ergebnis des Threads zurückgeben sollte, müsste startClient auf den Thread warten, was den Thread ziemlich überflüssig macht...

Also entweder Thread weglassen, oder aus dem Thread heraus die Methode aufrufen, welche die bline benötigt.
 
Ich muss verschiedene commands aufrufen:

startClient("socket_command1");
startClient("socket_command2");
startClient("socket_command3");

und bline auslesen. Thread kann ich nicht rauslassen. Kann man als Stream oder oder was speichern ?

Gruss
 
Wie währe es wenn der Thread fertig ist einfach eine Methode einer anderen Klasse aufruft um seinen Wert zu übergeben.
 
Danke, Ich habe es nach fertigen Thread geändert, aber es fällt mir wieder ein, dieses Thread kann bline nicht sofort auslesen, so dass man mit andere Methode anderer Klasse den Rückgabewert von diesem Thread auch nicht gleich zurück geben kann.

zb.
sockthread.getResult();
Gruss
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben