# String zurück liefern !



## knopper (24. Mrz 2005)

Hi,
Ich habe folgendes Codsegment:


```
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


----------



## Beni (24. Mrz 2005)

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.


----------



## knopper (29. Mrz 2005)

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


----------



## Bert Brenner (29. Mrz 2005)

Wie währe es wenn der Thread fertig ist einfach eine Methode einer anderen Klasse aufruft um seinen Wert zu übergeben.


----------



## knopper (29. Mrz 2005)

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


----------

