Zum Inhalt springen

Problem mit Thread


Dalton

Empfohlene Beiträge

Hallo zusammen,

ich bekomme beim Stoppen eines Threads, mit threadname.interrupt(), diesen Fehler:

java.lang.Error: Interrupted attempt to aquire write lock

at javax.swing.text.AbstractDocument.writeLock(AbstractDocument.java:1346)

at javax.swing.text.AbstractDocument.insertString(AbstractDocument.java:699)

at javax.swing.text.PlainDocument.insertString(PlainDocument.java:114)

at javax.swing.JTextArea.append(JTextArea.java:465)

at LoeschenThread$LeereVerzeichnisse.loescheDatei(LoeschenThread.java:393)

at LoeschenThread$LeereVerzeichnisse.leseQuellVerzeichnis(LoeschenThread.java:366)

at LoeschenThread$LeereVerzeichnisse.leseQuellVerzeichnis(LoeschenThread.java:362)

at LoeschenThread$LeereVerzeichnisse.leseQuellVerzeichnis(LoeschenThread.java:362)

at LoeschenThread$LeereVerzeichnisse.beginne(LoeschenThread.java:349)

at LoeschenThread.verzeichnis(LoeschenThread.java:89)

at LoeschenThread.run(LoeschenThread.java:54)

Ich frage im Thread mit if (this.isInterrupted()) ab, ob der Thread abgebrochen wurde, wenn ja sollte er einen Text in einem JTextArea anhängt!

Hoffe, dass mir jemand von helfen kann!!

MfG

Dalton

Link zu diesem Kommentar
Auf anderen Seiten teilen

das ist schwierig weil der ein biserl lang is aber im prinzip läufst so ab:


class Klasse1 {
//started den Thread
private void startThread(){
name.start();
}
//beendet den Thread
//wird zu einer beliebigen Zeit
//nach Button-Klick aufgerufen
private void beendetThread(){
name.interrupt(),
}
}

class Klasse2 extends Thread{
public void run() {
...einige jtextArea.append().
methode1();
...einige jtextArea.append().
}
private void methode1() {
while(true){
...
if (this.isInterrupted())
return;
...
}
}
}
[/PHP]

Und noch was, der Fehler tritt nicht immer auf wenn ich den Thread abbreche, sondern nur gelegentlich.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

also ich würde das so machen.


class Klasse1 {
//started den Thread
private void startThread(){
name.start();
}
//beendet den Thread
//wird zu einer beliebigen Zeit
//nach Button-Klick aufgerufen
private void beendetThread(){
name.setStatus(false);
}
}

class Klasse2 extends Thread{
privat boolean status = true;

public void setStatus(boolean {
status = b;
}

public void run() {
...einige jtextArea.append().
methode1();
...einige jtextArea.append().
}
private void methode1() {
while(status==true){
}
}
}
[/PHP]

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nicht ganz,

aus de.comp.lang.java newsgroup da zu faul zum tippen. LINK

-----

interrupt tut prinzipiell zwei Dinge je nach Zustand (steht auch in der APIDoc->RTFM):

1) Innerhalb eines wait-Prozesses durch wait/sleep/join wird dieser beendet, einer

InterruptetException geworfen und der interrupted-Status geloescht.

2) Ausserhalb eines solchen Prozesses, also im "normalen" Betrieb, wird der

interrupted-Status gesetzt. Nicht mehr. Kein mystischen stoppen des Threads.

Auf die Statusaenderung zu reagieren bleibt dem Implementor des konkreten

Threads ueberlassen.

-----

Die Art die ich gepostet habe, läßt einen sleep Abschnitt erst zuende laufen und beendet dann den Thread.

Es kommt also zu keiner Exception.

Was bei dir jetzt besser geeignet ist, musst du entscheiden. :-)

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...