Alternative zu Thread : stop() ?

Status
Nicht offen für weitere Antworten.
M

major66

Gast
Hallo zusammen,

habe eine Frage zur deprecated-Methode stop() in Thread:

Mein Programm verwendet die Methode stop(), um einen Thread abzubrechen (funktioniert optimal).
Um aber dem vorzubeugen, dass die Methode in zukünftigen Java-Versionen GAR nicht mehr zur Verfügung steht, würde ich gerne eine nicht als deprecated gekennzeichnetete :) Methode verwenden.

Leider klappt weder interrupt() noch destroy().
Beide setzen die run()-Methode weiterhin fort.

Um euch noch zu illustrieren, für was ich überhaupt den Thread verwende (warum ich die Ausführung nicht nur unterbrechen, sondern endgültig abbrechen möchte), hier die Kurzfassung der run-Methode:

Code:
run() {
   Algorithmen.faktorisierungPlusAusgabe(BigInteger zahl, JTextArea ausgabeFeld);
}

Es geht also nur darum, dass der Benutzer die Berechnung der Faktorisierung abbrechen kann, wenn es ihm zu lange dauert bzw. ihm die bisher erhaltenen Zwischenergebnisse bereits ausreichen. Deshalb wird die Ausgabe auch gleich direkt ins Ausgabefeld geschrieben und nicht als Liste zurückgegeben (die Version gibt's auch).
Wie gesagt, weder interrupt() noch destroy() beendet den Thread endgültig, beide setzen ihn nach kurzer Zeit fort. Warum?

Wie gesagt, mit der bisherigen Funktionalität bin ich voll zufrieden, mich stören halt die Compiler-Warnungen.
Kann mir jemand versichern, dass die Methode stop() auch in zukünftigen Java-Versionen vorhanden sein wird
UND dass durch meine Thread-Nutzung keine kritischen Speicherbereichszugriffe gibt ? Dann lass ich alles wie's ist (never change a running system :wink: )

Ansonsten wäre ich Änderungsvorschlägen nicht abgeneigt,
Vielen Dank schon mal,

M
 

no0ne

Mitglied
hi major66

also so wie ich das verstanden habe ist stop() deprecated weil sie den thread einfach zu einem zeitpunkt anhaelt den man vorher nicht bestimmen kann und es deshalb sein kann dass die daten inkonsitent bleiben

deswegen soll man mit der methode interrupt() setzt du ein flag, dass du in deinem thread mit isInterrupted() ueberpruefen kannst. gibt isInterrupted() "true" zurueck weisst du dass der thread beendet werden soll und kannst noch aufraeumarbeiten erledigen bevor du ihn beendest; du musst dir jetzt also einen teil selber schreiben

ich hofffe ich konnte mit meinem begrenzten wissen helfen, ich bin mir auch nicht sicher ob das alles 100% richtig is, aber ich denke im grossen und ganzen sollte es so ungefaehr sein.

mfg felix

[edit] wenn du das genauer nachlesen willst kann ich dir das javabuch empfehlen, dort steht das im kapitel 22, Multithreading
 
M

Major66

Gast
Hallo Leute,

danke für die Tips und Links.
Leider konnte ich dadurch nicht mehr erfahren als ich schon wußte.
Aber anscheinend gibt's auch nicht mehr Möglichkeiten.
interrupt() ist bei mir nicht anwendbar, weil ich nicht periodisch ein Flag abfragen kann, da praktisch die gesamte Lebenszeit des Threads durch EINEN Methodenaufruf draufgeht. Die Ausführung dieser Methode abzubrechen, geht wohl nur mit stop().

mfg,
major
 

Nobody

Top Contributor
nicht ganz:
hab das noch nicht getestet, aber evtl funzts ja

fast immer sieht das in nem thread ja so aus:
while(true)

das ganze könnte man doch durch
while(!isInterrupted())
ersetzten

wenn du noch mehr drin hast, kannsts ja auch kombinieren und danach nochmal das ganze abfragen und entsprechend reagieren
 
M

major66

Gast
@Rene : danke für den link, hatte ich schon gelesen. Habe aber keinen Monitor -> keine kritischen Methoden -> stop verwenden ok ?

@nobody : danke, nur leider hab ich keine while-Schleife im Thread, sondern nur den Aufruf der u.U. sehr lange dauernden Methode xxx. Die Ausführung dieser will ich auf Wunsch abbrechen können -> keine andere Möglichkeit als stop() ?
 

René Link

Aktives Mitglied
Hi,

wenn du sagst, dass es bei dir keine Race Conditions und somit auch keine inkonsitenten Daten gibt ist die
Verwendung von stop völlig ok. Man muss halt nur wissen, wann man es anwenden kann und wann es
zur Katastrophe führen kann.
 
M

major66

Gast
danke, DAS wollte ich hören :D

es besteht auch nicht die Gefahr, dass die Methode in zukünftigen Java-Versionen verschwindet, oder ?

mfg,
major
 

Javahnsinn

Aktives Mitglied
:) Also stop() ist da zwar deprecated,
aber die API des 1.5.0 Release bietet die auch noch an
(uff!)

Ich glaub', dass stop() eines Tages verschwinden wird, ist ebensowenig zu erwarten wie ein Verschwinden von "kill -9" aus Unix. Ist immer gut, wenn man einen Not-Aus hat :wink:

Viel Spaß beim Coden,
Jürgen
 
B

Beni

Gast
DuoICE hat gesagt.:
Ich glaub', dass stop() eines Tages verschwinden wird, ist ebensowenig zu erwarten wie ein Verschwinden von "kill -9" aus Unix.
Vorallem weil das JDK abwärtskompatibel ist, das verschwindet mit 100% Garantie nicht :wink:

mfg Beni
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Gibt es mittlerweile eine Alternative zu DaisyDiff Allgemeine Java-Themen 2
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
Zrebna Alternative Darstellung eines Codesnippets Allgemeine Java-Themen 33
W Alternative für Threads Allgemeine Java-Themen 6
Thallius Alternative für SwingWorker Allgemeine Java-Themen 5
J Suche Alternative zu Jasper Reports Allgemeine Java-Themen 4
M Suche Alternative zu JFreeChart Allgemeine Java-Themen 11
D Konstruktor - jedes Objekt einzeln erzeugen - alternative? Allgemeine Java-Themen 8
M DAOs veraltet - was ist die Alternative? Allgemeine Java-Themen 13
MiMa Array umbau oder Alternative? Allgemeine Java-Themen 5
C Alternative zu NetworkX in Java Allgemeine Java-Themen 1
M Alternative zur Serialisierung.. Protobuf? Allgemeine Java-Themen 9
B Alternative zu nebenläufigen Prozessen Allgemeine Java-Themen 4
BonoBoo Alternative zum endlosen Instanzieren Allgemeine Java-Themen 2
F Platzsparende Alternative zu .txt-Dateien Allgemeine Java-Themen 12
E Gewollte Endlosschleife unterbrechen oder Alternative gesucht Allgemeine Java-Themen 2
F Alternative sun.jdbc.odbc.JdbcOdbcDriver (Access Datenbank) Allgemeine Java-Themen 2
F alternative zu "JPEGImageDecoderImpl" Allgemeine Java-Themen 2
T Timer oder Alternative? Allgemeine Java-Themen 3
G Alternative zu .properties Dateien Allgemeine Java-Themen 20
S Alternative zu SortedMap? Allgemeine Java-Themen 8
H Alternative zu Stack Allgemeine Java-Themen 3
pikay Jar2Exe Alternative? Allgemeine Java-Themen 17
E javax.comm: Suche eine open source Alternative zu rxtx Allgemeine Java-Themen 8
H Alternative if Schreibweise mit ? Allgemeine Java-Themen 10
G suche Property alternative Allgemeine Java-Themen 4
H Wie schön oder unschön ist dieser code - alternative ? Allgemeine Java-Themen 5
E Viele if Abfragen auf viele Strings --> Alternative zu if Allgemeine Java-Themen 8
G libext Alternative? Allgemeine Java-Themen 5
S Alternative zu Robot (wegen Umlauten) Allgemeine Java-Themen 13
foobar Alternative zu JavaHelp gesucht Allgemeine Java-Themen 2
I Alternative zu getClass().getResourceAsStream() ? Allgemeine Java-Themen 9
D System.setProperty alternative Allgemeine Java-Themen 4
J alternative zu rsh ? Allgemeine Java-Themen 5
K KeyListener-Alternative ohne anfängliches Delay ? Allgemeine Java-Themen 5
G Alternative zu split() Allgemeine Java-Themen 3
K Alternative zu JNI Allgemeine Java-Themen 3
P Alternative zu replaceAll (jdk < 1.4) Allgemeine Java-Themen 14
R 11 GB File lesen ohne zu extrahieren Filedaten Bereich für Bereich adressieren dann mit Multi-Thread id die DB importieren Allgemeine Java-Themen 3
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
smarterToby Wie stoppe ich diesen Thread Allgemeine Java-Themen 4
A Thread.sleep Problem Allgemeine Java-Themen 2
J Thread started nur einmal Allgemeine Java-Themen 19
W Server-Thread schreibt nicht alle Dateien Allgemeine Java-Themen 6
OnDemand Logfile pro User / Thread Allgemeine Java-Themen 7
OnDemand Thread / Service abbrechen Allgemeine Java-Themen 3
Thallius Ist meine static Helper Class Thread save? Allgemeine Java-Themen 9
P Swing Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: npoints > xpoints.length || npoints > ypoints.length Allgemeine Java-Themen 5
B Thread.sleep() in EJB Container wie lösen? Allgemeine Java-Themen 11
S Ist das Neuzuweisen von Feldern atomic und damit Thread-Safe? Allgemeine Java-Themen 2
S Exception in thread "main" java.lang.NullPointerException at FamilienApp.main(FamilienApp.java:15) Allgemeine Java-Themen 1
J Einen Thread in einer Schleife Allgemeine Java-Themen 2
E HILFE !! Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils Allgemeine Java-Themen 4
Flynn Thread-Problem... Allgemeine Java-Themen 2
G Thread-Programmierung Allgemeine Java-Themen 5
S Datei wird nicht gefunden Thread.currentThread().getContextClassLoader().getResourceAsStream() Allgemeine Java-Themen 1
G Beendet sich der Thread selbst?! Allgemeine Java-Themen 3
mrbig2017 Sleep wird ignoriert und der Thread wartet nicht Allgemeine Java-Themen 1
S Thread beenden Allgemeine Java-Themen 9
M Array aus Thread Objekten erstellen Allgemeine Java-Themen 2
Aruetiise Swing JOptionPane ohne denn Thread zu pausieren Allgemeine Java-Themen 1
M Nanosekunden-Pause innerhalb einen Thread-Loops Allgemeine Java-Themen 3
E Thread Exception Allgemeine Java-Themen 6
javaerd Binomialkoeffizient ausrechnen, Exception in thread "main" java.lang.StackOverflowError Allgemeine Java-Themen 6
T Merkwürdiges Thread-Verhalten Allgemeine Java-Themen 6
K Thread Problem Allgemeine Java-Themen 6
W Thread sleep 30 sekunden - wenn keine Antwort bis dahin neu senden Allgemeine Java-Themen 2
H Thread bleibt stehen bei jar in jar Allgemeine Java-Themen 1
J Threads HTTP Request (Thread) dauert lange - in Android Allgemeine Java-Themen 3
F CPU Last eines Thread ausfindig machen Allgemeine Java-Themen 0
V Compiler-Fehler Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 125, Size: 125 Allgemeine Java-Themen 11
Tausendsassa Threads Einen Thread sich selbst schließen lassen Allgemeine Java-Themen 17
P Threads BufferedImage, Thread Concurrency Allgemeine Java-Themen 1
M Klasse in separaten Thread ausführen.Wie genau? Allgemeine Java-Themen 2
llabusch Thread blockiert Dialog Allgemeine Java-Themen 1
J Thread wait() Allgemeine Java-Themen 2
V Thread.sleep und InterruptedException? Allgemeine Java-Themen 1
G Thread nicht von GC zerstört Allgemeine Java-Themen 6
J Wie erschaffe ich einen sicheren Datenaustausch zwischen Thread und Nicht-Threads Allgemeine Java-Themen 8
Sogomn Thread blocken bis Taste gedrückt Allgemeine Java-Themen 5
T Starten vom Thread Allgemeine Java-Themen 3
T Wait/Notify() bei Thread Allgemeine Java-Themen 6
J Exception in thread "main" java.lang.NoClassDefFoundError Allgemeine Java-Themen 4
M Exception in thread "AWT-EventQueue-0" Allgemeine Java-Themen 6
Q Thread wacht nicht auf Allgemeine Java-Themen 7
T Fragen zum Thread-Thema Allgemeine Java-Themen 4
T Threads Input/Output im Thread - Datei ohne Inhalt Allgemeine Java-Themen 1
T Fragen zum Thread-Thema Allgemeine Java-Themen 9
C Threads Variablen in einem Thread Aktualisieren Allgemeine Java-Themen 17
U Thread beenden Allgemeine Java-Themen 3
W Threads Mit Thread und Runtime externe Programme öffnen Allgemeine Java-Themen 0
N Thread interrupt Status debuggen Allgemeine Java-Themen 6
A Thread: Code paralell ausführen in mehreren Instanzen Allgemeine Java-Themen 1
E Threads linkedlist/multi-thread problem Allgemeine Java-Themen 3
B Erkennen, wann Prozess beendet ist, dann Thread beenden. Allgemeine Java-Themen 6
A Thread Fehler absichtlich provozieren Allgemeine Java-Themen 3
B Threads Java Thread kommunizieren Allgemeine Java-Themen 12
N Thread Sicherheit im komplexen Datenmodell Allgemeine Java-Themen 7
K Thread richtig benutzen Allgemeine Java-Themen 3
K Exception in thread "AWT-EventQueue-1" Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben