Thread beenden aus zweiter Klasse

TDO88

Bekanntes Mitglied
Hallo Zusammen,
ich habe folgendes Problem:
Ich habe eine "Hauptklasse", welche sich hauptsächlich um das Frontpanel der Anwendung kümmert.
Darin habe ich einen Thread als public static Thread deklariert.
Dieser Thread wird in einer zweiten Klasse "Messung" erzeugt und abgearbeitet.
Wenn jemand auf dem Frontpanel dann einen Stop Button betätigt, soll dieser Thread beendet werden.
Wenn ich das ganze in meiner Entwicklungsumgebung laufen lasse funktioniert das auch soweit prima. Allerdings habe ich jetzt bei einem Kollegen gesehen, der die Anwendung als .jar ausführt, dass die komplette Anwendung einfriert, wenn dort der Stop Button betätigt wird. Dann hilft leider nur noch der Task Manager...
Hat jemand eine Idee, woran das liegen kann?
Hier sind Code Ausschnitte, welche die wichtigsten Punkte für den Thread beinhalten.

Java:
public class Hauptklasse extends javax.swing.JFrame
{
    public static Thread messung_thread = null;
   
    public Hauptklasse()
    {
        ...
    }
   
    private void startButtonActionPerformed(java.awt.event.ActionEvent evt)
    {
        Messung mess = new Messung(this);
        mess.Start();
    }
   
    private void stopButtonActionPerformed(java.awt.event.ActionEvent evt)
    {
        if(messung_thread != null)
        {
            if(messung_thread.isAlive())
            {
                messung_thread.interrupt();
            }
        }
    }
}

Java:
import static components.Hauptklasse.messung_thread;

public class Messung
{
    Hauptklasse mclass;
   
    Messung(Hauptklasse hauptclass)
    {
        this.mclass = hauptclass;
    }
   
    public void Start()
    {
        messung_thread = new Thread()
        {
            @Override
            public void run()
            {
                try
                {
                    //...Messung läuft
                }
                catch(InterruptedException iex)
                {
                    ...
                    Thread.currentThread().interrupt();
                }
                catch(Exception ex)
                {
                    ...
                    Thread.currentThread().interrupt();
                }
            }
        };
       
        //Parameter der Messung abfragen
       
        messung_thread.setName("Messung_laueft");
        messung_thread.start();
    }
}

Hat jemand eine Idee, was da schief laufen könnte?
 

Neumi5694

Top Contributor
Wozu hat die Hauptklasse eine Referenz auf einen Thread?
Sollte das nicht eine Referenz auf die Instanz der Klasse Messung sein?

In der Klasse Messung nämlich erzeugst du einen Thread, der aber nicht zurück in die Hauptklasse geschrieben wird.
Dieses Hin- und Her- ist eh nicht gut, behalte die Richtung bei

Hauptklasse -> Messung -> Thread.

HTML:
HauptClasse {
    aktuelleMessung;
    void startButton() {
        aktuelleMessung = ...;
        aktuelleMessung.startThread();
    }
    void stopButton() {
       if (aktuelleMessung != null) {
           aktuelleMessung.stopThread();
           vorigeMessungen.add(aktuelleMessung); //man weiß ja nie
           aktuelleMessung = null;
       }
    }
}
 

TDO88

Bekanntes Mitglied
Super. Vielen Dank für den Tipp.
Irgendwie war in meinem Hirn verankert, dass ich den Thread in der Hauptklasse anlegen muss, damit ich ihn beim betätigen des Stop buttons beenden kann, aber das ist ja völliger quatsch.
Ich habe es jetzt mal so abgeändert in der Hoffnung, dass das Problem damit behoben ist. Mein Kollege wird es dann zeitnah testen und ich gebe dann hier nochmal bescheid, ob das die Lösung des Problems war.
 

TDO88

Bekanntes Mitglied
Um das Thema abzuschließen.
Plötzlich hat auch die ursprüngliche Version auf dem Rechner funktioniert.
Ich habe dennoch alle Threads mit dem Hinweis von Neumi umgesetzt, da es mehr Sinn macht.
Daher nochmal vielen Dank
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B In einem Thread Endlosschleife beenden Java Basics - Anfänger-Themen 19
B Endlosschleife Thread sauber beenden Java Basics - Anfänger-Themen 19
F Thread der auf eine Queue wartet, sicher beenden Java Basics - Anfänger-Themen 4
Bluedaishi Klassen Thread über if Anweisung starten und von anderer Klassen über Button Beenden Java Basics - Anfänger-Themen 34
P Threads Thread und Zugriff auf externe Methode beenden Java Basics - Anfänger-Themen 4
J Thread beenden? Java Basics - Anfänger-Themen 2
pun Thread "extern" beenden Java Basics - Anfänger-Themen 4
K Thread nach X-Sekunden beenden Java Basics - Anfänger-Themen 6
G Thread in der run-Methode beenden Java Basics - Anfänger-Themen 6
M Thread beenden Java Basics - Anfänger-Themen 13
B Thread beenden! Java Basics - Anfänger-Themen 6
E Thread beenden Java Basics - Anfänger-Themen 13
S Thread nach Beenden erneut starten Java Basics - Anfänger-Themen 2
D Thread soll sich selbst beenden Java Basics - Anfänger-Themen 8
W Kann Thread nicht richtig beenden. Java Basics - Anfänger-Themen 11
E Thread mit System.gc beenden Java Basics - Anfänger-Themen 2
7 Thread beenden Java Basics - Anfänger-Themen 4
F Thread-Objekte beenden/zerstören Java Basics - Anfänger-Themen 5
Y Thread von außen beenden Java Basics - Anfänger-Themen 8
B Thread beenden, aber wie? Java Basics - Anfänger-Themen 8
M thread beenden und starten ---> IllegalThreadStateExcepti Java Basics - Anfänger-Themen 2
L Thread beenden Java Basics - Anfänger-Themen 4
Leyla Thread isInterrupt Java Basics - Anfänger-Themen 18
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
A Thread XML-Dateien zusammenfügen Java Basics - Anfänger-Themen 11
F influxdb Upload in eigenem Thread Java Basics - Anfänger-Themen 2
frager2345 Thread - Methoden synchronized deklarieren Java Basics - Anfänger-Themen 10
berserkerdq2 Größter unterschied von extends thread und implements runnable? Java Basics - Anfänger-Themen 2
A Thread - Synchronized Java Basics - Anfänger-Themen 10
A Thread Producer - Consumer Java Basics - Anfänger-Themen 1
A Thread-Semhapore Java Basics - Anfänger-Themen 0
A Thread Exchanger Java Basics - Anfänger-Themen 22
A Thread-Cyclicbarrier Java Basics - Anfänger-Themen 4
A Thread-Verklemmung Java Basics - Anfänger-Themen 10
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
A Thread find number Java Basics - Anfänger-Themen 8
F Thread.sleep() Java Basics - Anfänger-Themen 5
F Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11 at main.main(main.java:11) Java Basics - Anfänger-Themen 2
A Thread Java Basics - Anfänger-Themen 3
M Exception in thread "main" java.util.NoSuchElementException Java Basics - Anfänger-Themen 2
A Thread Java Basics - Anfänger-Themen 8
B Compiler-Fehler Fehlermeldung Exception in thread, falsche Eingabewert Java Basics - Anfänger-Themen 2
M Thread-Zustände Java Basics - Anfänger-Themen 6
CptK For-Schleife in Thread nach jedem Durchlauf pausieren Java Basics - Anfänger-Themen 35
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
D Java Thread wartet nur ein mal Java Basics - Anfänger-Themen 1
D Java Thread wartet nur ein mal Java Basics - Anfänger-Themen 0
O Exception in thread "main" java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 4
C Thread und TimerTask, Verstädnisproblem Java Basics - Anfänger-Themen 10
amgadalghabra Sorting Thread Launcher Java Basics - Anfänger-Themen 3
B Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException Java Basics - Anfänger-Themen 8
A Thread Java Basics - Anfänger-Themen 4
A Thread Java Basics - Anfänger-Themen 1
A Thread Java Basics - Anfänger-Themen 0
R Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
L Liste in anderem Thread laden Java Basics - Anfänger-Themen 1
B Thread / Prozess stoppen? Java Basics - Anfänger-Themen 22
I Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 Java Basics - Anfänger-Themen 3
B Threads Thread sleep() Method einfache Frage Java Basics - Anfänger-Themen 8
W Thread Aufgabe - Vorgehensweise Java Basics - Anfänger-Themen 8
L Liste in anderem Thread laden Java Basics - Anfänger-Themen 0
J Threads PrograssBar update während thread Java Basics - Anfänger-Themen 13
D Compiler-Fehler Wert auf Datenbank übertragen und Sleep Thread Java Basics - Anfänger-Themen 3
Spencer Reid JavaFX Memory Thread.sleep Java Basics - Anfänger-Themen 1
S Thread.sleep mit JProgressBar Java Basics - Anfänger-Themen 1
ralfb1105 Frage zu Thread Synchronisation mit wait() und notify() Java Basics - Anfänger-Themen 3
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
J JavaFX -> SocketIO -> Thread -> Update Label Java Basics - Anfänger-Themen 13
J Thread Handling Java Basics - Anfänger-Themen 9
A Problem mit Thread.sleep Java Basics - Anfänger-Themen 4
C Thread in Methode + raus aus der Schleife Java Basics - Anfänger-Themen 10
E Threads Thread in While-Schleife nur einmal starten Java Basics - Anfänger-Themen 2
F Daten von Thread an den aufrufenden zurückgeben Java Basics - Anfänger-Themen 22
C Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 Java Basics - Anfänger-Themen 3
B Thread Problem Java Basics - Anfänger-Themen 7
N KeyListener in Thread Java Basics - Anfänger-Themen 0
M Thread.sleep() Funktion Java Basics - Anfänger-Themen 1
W JLabel in Main aus Thread verändern. Java Basics - Anfänger-Themen 4
D Ausgeben welcher Thread gerade Arbeitet Java Basics - Anfänger-Themen 8
N Threads Thread-Fehler Java Basics - Anfänger-Themen 2
F Thread um Uhrzeit ausführen Java Basics - Anfänger-Themen 5
F Get/Post als eigener Thread mit Rückgabe Java Basics - Anfänger-Themen 5
J Exception in thread "main" Java Basics - Anfänger-Themen 1
B Animation mit Thread(s) Java Basics - Anfänger-Themen 23
I Thread.sleep (1000); Java Basics - Anfänger-Themen 1
M Threads Jede Klasse einem Thread zuweisen Java Basics - Anfänger-Themen 7
J Java Thread cancel() und wiederbeleben Java Basics - Anfänger-Themen 4
J BouncingBalls 1 Thread Java Basics - Anfänger-Themen 3
L Fehler: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 4
J Timer oder Thread programmieren ? Java Basics - Anfänger-Themen 10
fLooojava Laufender Thread | Boolean ändern Java Basics - Anfänger-Themen 9
T Thread Pool mit Work Stealing Java Basics - Anfänger-Themen 1
R Java Thread Java Basics - Anfänger-Themen 10
J Welche Methoden laufen im neuen thread ?? Java Basics - Anfänger-Themen 9
S Java memory fehler: Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap spa Java Basics - Anfänger-Themen 5
K Thread - Methoden in die run Methode Schreiben Java Basics - Anfänger-Themen 5
N Threads Exception in thread "main"... Feher bei dem Versuch ein Radius zu berechnen Java Basics - Anfänger-Themen 4
A Code läuft nicht, Fehlermeldung Exception in thread "main" java.lang.Error: Unresolved compilation " Java Basics - Anfänger-Themen 11
V Threads Exception in Thread behandeln Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben