Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Problem mit Thread

Empfohlene Antworten

Veröffentlicht

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

hmm kanste vieleicht ne biserl mehr quell text posten?

THX Badgott

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.

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

Aber müsste das nicht vom Prinzip her das gleiche sein?

Dank dir,

Dalton

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.