G
Gast
Gast
Hallo,
um bei einem Programm alle paar Sekunden eine Serverabfrage zu machen habe ich diese in eine Klasse gepackt und runnable implementiert. Wird in meiner GUI eine Checkbox gesetzt dann startet der Thread problemlos, mache ich den Hacken weg, läuft der Thread einfach weiter und setzt den interrupt-Flag nicht auf true.
Das ganze wird in der MainFrame-Klasse gesteuert
um bei einem Programm alle paar Sekunden eine Serverabfrage zu machen habe ich diese in eine Klasse gepackt und runnable implementiert. Wird in meiner GUI eine Checkbox gesetzt dann startet der Thread problemlos, mache ich den Hacken weg, läuft der Thread einfach weiter und setzt den interrupt-Flag nicht auf true.
Code:
package Editor;
import java.net.*;
import java.io.*;
public class Client implements Runnable
{
Socket server=null;
String version,log;
public Client(String version)
{
this.version=version;
}
public void run()
{
while(!Thread.currentThread().isInterrupted())
{
try //Aufbau der Serververbindung und Abfrage
{
server=new Socket("192.168.178.22",3141);
InputStream input=server.getInputStream();
OutputStream output=server.getOutputStream();
DataInputStream in=new DataInputStream(input);
DataOutputStream out=new DataOutputStream(output);
out.writeUTF("gpeditor");
out.writeUTF(version);
log=in.readUTF();
System.out.println(log);
//return log;
}
catch(UnknownHostException e)
{
System.out.println("Keine Verbindung zum Server gefunden!");
//return "Es ist ein Fehler aufgetreten";
}
catch(IOException e)
{
System.out.println("Keine Verbindung zum Server gefunden");
//return "Es ist ein Fehler aufgetreten";
}
finally
{
if(server!=null)
try
{
server.close();
}
catch(IOException e)
{
System.out.println("Networkstream kann nicht geschlossen werden");
}
}
try
{
Thread.currentThread().sleep(5000);
}
catch (InterruptedException e)
{
System.out.println("Unterbrechung im Sleep");
Thread.currentThread().interrupt();
}
}
}
}
Das ganze wird in der MainFrame-Klasse gesteuert
Code:
public void itemStateChanged(ItemEvent e)
{
if(e.getSource()==autoupdate)
{
Thread t1=new Thread(new Client(version));
if(autoupdate.isSelected())
{
t1.start();
System.out.println(t1.isInterrupted());
}
if(autoupdate.isSelected()==false)
{
System.out.println("FLAG!!!");
System.out.println(t1.isInterrupted());
t1.interrupt();
System.out.println(t1.isInterrupted());
}
}