Wer startet den EDT?

Status
Nicht offen für weitere Antworten.

Tobias

Top Contributor
Hi,

ich beschäftige mich gerade etwas tiefschürfender mit Multithreading. Dabei wurde im Kapitel über "Thread Confinement", also das Einschließen von veränderlichen Objekten innerhalb eines Threads, als Beispiel Swing angebracht. Da stellt sich mir natürlich die Frage, wie das in Swing den eigentlich realisiert ist? Wer startet den EDT? Im Konstruktor von JFrame habe ich nichts dazu gefunden. Es scheint mit java.awt.Toolkit zutun zu heben, zumindest wird diese Klasse von den SwingUtilities und invokeLater() genutzt. Aber es gibt ja eine Reihe anderer, falscher Möglichkeiten eine Swing-GUI zu starten und sie funktionieren trotzdem. Also welche Art Magie steckt da dahinter?

mpG
Tobias
 
S

SlaterB

Gast
siehe auch
http://www.javaspecialists.eu/archive/Issue010.html
dort steht am Anfang was und am Ende ein Beispiel-Code

Code:
import java.awt.Cursor;
public class J23D {
  // This cursor class when loaded now starts the GUI event threads!
  private static Cursor s_waitCursor =
    Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR);
  public void log(String _msg) {
    System.out.println(_msg);
  }
  public static void main ( String[] _args ) {
    new J23D().log("That's all folks!");
  }
}
 

Tobias

Top Contributor
Ja, von dir angegebenes Code-Sample startet ebenfalls den EDT. Aber warum? Wo ist der Auslöser? Was passiert da unter der Haube? Die Vermutung java.AWT.Toolkit könne dahinterstecken war jedenfalls eher albern :oops: ...
Ist das nur JVM-Magie oder eine interessante Konstruktion in plain-Java, die man sich als Normalsterblicher vielleicht zunutze machen kann?

EDIT: Nicht alles glauben, was man liest: Ich hab das Code-Sample gerade in Eclipse ausprobiert und es startet NICHT den EDT. Ich bin damit meiner Lösung aber noch nicht näher gekommen.
 

Wildcard

Top Contributor
Bei Sun's Java ist dafür das sun.awt.SunToolkit verantwortlich.
AFAIK wird bei Toolkit.getDefaultToolkit indirekt das SunToolkit instanziert und da man das AWT Toolkit für addNotify braucht, ist sichergestellt, dass der EDT immer gestartet wird.
 

Tobias

Top Contributor
Ok, danke, ich habe die entsprechenden Stellen im Code gefunden. Das Bild wird langsam klarer.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben