Hallo zusammen,
ich sitze hier nun schon wieder geschlagene vier stunden und komme nicht weiter...
Folgendes zum Hintergrund:
Ich habe zwei klassen (rest sollte irrelevant sein) in der einen klasse wird ein Thread gestartet. In diesem Thread werden variablen ausgelesen und gespeichert. Anschliessend benötige ich diese um in der ersten klasse eine if-else abfrage zu starten.
nach dem motto
Klasse1: Thread wird gestartet
Klasse2: thread liest aus socket.isConnected() == true -> meldet das weiter
Klasse1: anhand des true-werts wird das label von div elementen geändert.
So nun zur situation:
die klasse 1 wird irgendwie an einem Stück durchgearbeitet. Der thread wird zwar gestartet aber hinten angehängt. bedeutet aber dass der wert immer auf false steht.
die klasse 2 wird erst nach dem abarbeiten der 1sten klasse in angriff genommen - hier hat die variable den gewünschten wert, nur er kommt "zu spät" an um noch irgendwas in der ersten beeinflussen zu können. Ich poste unten mal noch die code-fragmente.
Was ist hier zu tun?
Ich habe shcon die verschiedensten sachen ausprobiert, sogar eine zählschleife eingebaut, weil ich dachte dass der thread eventuell noch nicht ausgeführt wurde. Kein erfolg - die variable bleibt auf false.
Eventuell habe ich auch nen falschen denkansatz - bin noch nicht sehr lange am programmieren und daher für jede hilfe dankbar.
Klasse1:
und Klasse2:
ich sitze hier nun schon wieder geschlagene vier stunden und komme nicht weiter...
Folgendes zum Hintergrund:
Ich habe zwei klassen (rest sollte irrelevant sein) in der einen klasse wird ein Thread gestartet. In diesem Thread werden variablen ausgelesen und gespeichert. Anschliessend benötige ich diese um in der ersten klasse eine if-else abfrage zu starten.
nach dem motto
Klasse1: Thread wird gestartet
Klasse2: thread liest aus socket.isConnected() == true -> meldet das weiter
Klasse1: anhand des true-werts wird das label von div elementen geändert.
So nun zur situation:
die klasse 1 wird irgendwie an einem Stück durchgearbeitet. Der thread wird zwar gestartet aber hinten angehängt. bedeutet aber dass der wert immer auf false steht.
die klasse 2 wird erst nach dem abarbeiten der 1sten klasse in angriff genommen - hier hat die variable den gewünschten wert, nur er kommt "zu spät" an um noch irgendwas in der ersten beeinflussen zu können. Ich poste unten mal noch die code-fragmente.
Was ist hier zu tun?
Ich habe shcon die verschiedensten sachen ausprobiert, sogar eine zählschleife eingebaut, weil ich dachte dass der thread eventuell noch nicht ausgeführt wurde. Kein erfolg - die variable bleibt auf false.
Eventuell habe ich auch nen falschen denkansatz - bin noch nicht sehr lange am programmieren und daher für jede hilfe dankbar.
Klasse1:
Code:
//int copyPort = Integer.parseInt(copyCheck);
int streamPort = Integer.parseInt(streamCheck);
int commPort = Integer.parseInt(commCheck);
//Communication -> holen des Dateinamens
System.out.println("Comm-IP: " + commIp);
System.out.println("Comm-Port: " + commPort);
//Clommclient starten
commClient = new CommClient(commIp, commPort);
commThread = new Thread(commClient);
commThread.start();
System.out.println("Stream-IP: " + streamIp);
System.out.println("Stream-Port: " + streamPort);
streamingClient = new StreamingClient(streamIp, streamPort);
streamingThread = new Thread(streamingClient);
streamingThread.start();
fileName = clientBuffer.getFileName();
System.out.println("Clientactionlistener -> startStream -> Commclient -> Filename: " + fileName);
boolean commConnectionStatus = clientBuffer.getCommConnectionStatus();
System.out.println("Clientactionlistener -> Stream -> Commclient -> Status: " + commConnectionStatus);
if (commConnectionStatus == true)
{
clientWindow.mp3Title.setText(fileName);
if (streamingClient.connectionSocket.isConnected() == true)
{
System.out.println("ClientActionlistener Stream(1): Der StreamClient wurde gestartet.");
clientWindow.streamStatus.setText(" caught");
clientWindow.catchStream.setLabel("Close Stream");
}
}
und Klasse2:
Code:
public void run()
{
try
{
connectionSocket = new Socket(commIp, commPort);
connectionStatus = connectionSocket.isConnected();
clientBuffer.commConnectionStatus = connectionStatus;
System.out.println("Die lokale Variable sagt: " + connectionStatus);
inFromServer = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
fileName = inFromServer.readLine();
System.out.println("Commclient Verbindung hergestellt");
System.out.println("Commclient: Der Dateiname ist: " + fileName);
//Threadsleep muss am ende der schleife stehen !!!
Thread.sleep(100);
}
catch (IOException err)
{
clientMessageBoxes.CommConnectionError();
System.out.println("CommClient run() IO-Exception: " + err);
// System.out.println("Der Dateiname lautet: " + fileName);
}
catch (InterruptedException err2)
{
clientMessageBoxes.CommConnectionError();
System.out.println("CommClient run() Interrupted-Exception: " + err2);
}
// catch (IOException err3)
// {
// System.out.println("CommClient run() IO-Exception: " + err3);
// }
}[quote][/quote]