Re: How to change JPanels?
Eric <e.d.programmer@gmail.com> wrote in news:25380f9b-1d8e-4515-9bb4-
fd8e5d87d828@r19g2000prm.googlegroups.com:
<snip>
Either I'm misunderstanding it or we're all saying the same thing 2
different ways so correct me if I'm wrong. Which of these statements
is wrong?
1) A Java program runs in a thread. If you want the program to do 2
things at once you start a new thread.
OK
2) If you run my test program from my last post and click the menu
option it starts a new worker thread. That worker thread executes a
done() method as EDT.
I don't know, I no longer have the program. However, only the EDT can
execute a method as EDT.
3) The menu option event takes 3 seconds to process. You can click it
again before it finishes and have it running 2 new concurrent EDT
threads.
No. At any instant, a Java program has at most one EDT.
4) While the menu item worker is running, the main window program is
still running in a thread listening for new events. It's thread is
also EDT.
Your wording is unclear to me but, at any instant, a Java program has at
most one EDT.
The following program may be instructive if you read through its output.
[Remember too that Swing makes use of AWT.]
public class EdtExperiment2 {
static void msg(Object ob) { System.out.println(ob) ; }
static void dumpThreads() {
for (Thread t : Thread.getAllStackTraces().keySet()) msg(t) ;
msg("========") ;
}
public static void main(String[] args) {
dumpThreads() ;
javax.swing.SwingUtilities.invokeLater( new Runnable() {
public void run() {
msg("EDT is " + Thread.currentThread()) ;
msg("========") ;
}
}) ;
dumpThreads() ;
}
}