Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: JAVA/Netbeans - Experimente mit Runnable

25 views
Skip to first unread message
Message has been deleted

Achim Peters

unread,
May 2, 2013, 11:06:45 AM5/2/13
to
Am 02.05.2013 16:12, schrieb Dirk Schwidde:
> Allgemeiner: Wie breche ich den gestarteten thread ab, wenn ein
> bstimmtes Ereignis eintritt?

> class Balkenanimation implements Runnable {

private boolean running = true;

> public void run() {
> fortschrittsanzeige.setValue(0);

for (int i = 1; i <= 100 && running; i++) {

> fortschrittsanzeige.setValue(i);
> warte(50);
> }

if ( running )
> txtAusgabe.setText("Download completed.");

else
txtAusgabe.setText("Download cancelled");
> }

public void cancel() {
running = false;
}

> }

HTH

Bye
Achim

Joerg Meier

unread,
May 2, 2013, 11:27:30 AM5/2/13
to
On Thu, 02 May 2013 17:06:45 +0200, Achim Peters wrote:

> private boolean running = true;

Da fehlt ein strategisches "volatile", andernfalls wird das gegebenenfalls
von Hotspot 'wegoptimiert'.

Liebe Gruesse,
Joerg

--
Ich lese meine Emails nicht, replies to Email bleiben also leider
ungelesen.

Joerg Meier

unread,
May 2, 2013, 11:29:19 AM5/2/13
to
On Thu, 02 May 2013 17:06:45 +0200, Achim Peters wrote:

>> txtAusgabe.setText("Download completed.");
> txtAusgabe.setText("Download cancelled");

Oh je, bitte nie nie von einem anderen Thread aus Swing anfassen. Swing ist
nicht threadsafe. Korrekt:

SwingUtilities.invokeLater(new Runnable() {
public void run() {
txtAusgabe.setText("Download whatever");
}
});

Joerg Meier

unread,
May 2, 2013, 11:33:00 AM5/2/13
to
On Thu, 02 May 2013 17:06:45 +0200, Achim Peters wrote:

>> fortschrittsanzeige.setValue(i);

Ups, hier gilt natuerlich das selbe wie bei txtAusgabe.setText.
Message has been deleted
Message has been deleted

S.van Heek

unread,
Jun 2, 2013, 8:38:17 AM6/2/13
to
JTextField ist threadsafe!

Joerg Meier

unread,
Jun 2, 2013, 12:30:26 PM6/2/13
to
On Sun, 2 Jun 2013 05:38:17 -0700 (PDT), S.van Heek wrote:

> JTextField ist threadsafe!

Soweit ich das sehen kann, ist das sachlich einfach 100% falsch. Das
JTextField Javadoc hat sogar eine ausdrueckliche Warnung: "Warning: Swing
is not thread safe.".

Kannst Du Deine Behauptung vom Gegenteil irgendwie untermauern ?

S.van Heek

unread,
Jun 3, 2013, 11:14:09 AM6/3/13
to
Ich habe das in einem Buch gelesen, kann's aber gerade nicht finden (ich guck' nochmal weiter, wenn ich's gefunden habe, sag' ich Bescheid).
Habe ein bisschen Gegoogelt und anscheinend hat sich die Doku in Java 7 geändert.

http://docs.oracle.com/javase/6/docs/api/javax/swing/JEditorPane.html#setText%28java.lang.String%29

http://stackoverflow.com/questions/4138996/frequent-calls-to-settext-in-multithreaded-swing-program

Habe anscheinend einen "alten" Wissensstand.
Wobei dein Weg natürlich der absolut übliche ist, da man ja meistens noch andere GUI-Elemente updaten muss (buttons etc.).

Sören
0 new messages