2010-02-19 13 views
6

con lo swing &, la coda di eventi (thread di invio evento) è ampiamente presentata & discussa.Con Swing e Java, ciò che viene fatto dal thread "Swing-Shell"

Tuttavia, quando si esaminano gli stati del thread con un'applicazione Swing, c'è anche una discussione denominata Swing-Shell. Con un breve googling non sono riuscito a trovare molti dettagli, principalmente tracce di stack di thread con segnalazioni di bug ecc.

Qualcuno può descrivere a breve cosa fa quel thread. O ancora meglio, qualcuno ha qualche link ad alcune documentazioni

EDIT: Stavo chiedendo troppo velocemente senza dettagli sufficienti, mi dispiace. Stavo andando però con vari problemi di JFileChooser e un thread chiamato "Swing-Shell" si verifica lì, avendo qualcosa a che fare con i servizi COM di Windows per il file system. Una traccia di stack di esempio all'interno di un problema di deadlock può essere trovata a Sun Bug #6741890. (la traccia dello stack di thread inizia con sun.awt.shell.Win32ShellFolderManager2 $ ComInvoker $ 3.run).

Con un esame più attento con jconsole, ho notato che il filo non è presente lì fino ho usato JFileChooser (JFileChooser ad esempio, il filo swing-Shell sarà probabilmente avviato con qualsiasi componenti utilizzando Win32ShellFolderManager) il filo sembra esistere anche dopo l'uso di JFileChooser.

Quindi, rispondendo a me stesso, il thread sembra essere un thread separato utilizzato per i servizi COM con le operazioni relative al file (solo con Windows?). Se qualcuno può fornire ulteriori dettagli, welcome =)

+1

Quando si esegue un dump filo, che cosa fa l'analisi dello stack assomigliare per quel filo? – PSpeed

+0

E per chiarire, se si avvia l'applicazione swing da una riga di comando su Windows, è possibile premere Ctrl-Break nella riga di comando mentre l'applicazione è in esecuzione (nota: non Ctrl-C) per ottenere le tracce dello stack di ogni thread in esecuzione . C'è un modo per farlo anche su Linux, ma non mi ricordo in cima alla mia testa. – PSpeed

risposta

1

Il numero, lo scopo e la denominazione dei thread iniziali è implementation dependent. Sulla mia piattaforma, il event dispatch thread (EDT) è denominato AWT-EventQueue-0.

Addendum: l'unico altro reference che ho trovato dice "Un'applicazione Motif utilizza un widget di shell per comunicare con il gestore di finestre". Stai usando una libreria Swing di qualche tipo?

Come suggerito sopra, una discarica di filo potrebbe essere illuminante. Le versioni recenti del profiler di NetBeans includono un pulsante di salvataggio; Ho allegato un'istantanea dei thread in un tipico busy demo.

image

+0

Sì, ho ottenuto il mio EDT con un nome simile ma questa "Swing-Shell" non sembra essere un "thread iniziale" (almeno nel senso del collegamento). Per me sembra essere più simile a qualche thread daemon di sfondo di Swing o qualcosa del genere .. – Touko

Problemi correlati