Hallo, ich habe folgende Klasse von SwingWorker erstellt, er wird benutzt um eine Tabelle zu aktualisieren.
Über einen Button erzeuge und starte ich den Thread:
Über einen weiteren Button beende ich den Thread:
Der Thread wird gestartet und die doInBackground() läuft und bei Stop wird done()ausgeführt. Im Eclipse Debug-Fenster bleibt der Thread jedoch als running bestehen.
Bei erneutem betätigen vom Start-Button wird ein neuer Thread im Debug-Fenster erstellt, so lange bis dort 10 Threads sind.
Diese haben alle den Status running. Beim setzen von Breakpoints lande ich in verschiedenen Threads.
Wieso wird der Thread nicht beendet?
Java:
public class MyWorker extends SwingWorker< Void, Void >
{
protected Void doInBackground() throws Exception
{
while( ! this.isCancelled() )
{
// Blockierende Warteschlange,
// Tu was, wenn Daten in Warteschlange verfügbar
Thread.sleep( 5 );
}
return null;
}
protected void done()
{
try
{
System.out.println( "Done: " + this.getState() );
}
catch ( CancellationException e)
{
System.out.println( "Cancel: " + this.getState() );
}
}
}
Java:
if( this.buttonStart == e.getSource() )
{
this.mySw = new MyWorker( );
this.mySw.execute();
}
Java:
else if( this.buttonStop == e.getSource() )
{
this.mySw.cancel( true );
}
Bei erneutem betätigen vom Start-Button wird ein neuer Thread im Debug-Fenster erstellt, so lange bis dort 10 Threads sind.
Diese haben alle den Status running. Beim setzen von Breakpoints lande ich in verschiedenen Threads.
Wieso wird der Thread nicht beendet?
Zuletzt bearbeitet von einem Moderator: