Re: threads and GUIs
LC's No-Spam Newsreading account wrote:
uh ? what happens to a thread when the threaded Runnable
run() method ends (ends or returns ? is it the same ?)
It just hangs around until and unless all references to it go away. Once a
thread object is dereferenced in your code and is no longer alive, it becomes
eligible for garbage collection (GC).
When a method ends, it returns.
LC's No-Spam Newsreading account wrote:
monitor.java is an application (therefore it shall contain a class of
the same name, and a main(). The main uses the standard swing [sic] idiom to
start a GUI. And THEN should execute the workhorse. I am not sure
whether the workhorse needs to be a constructor (there will be a single
The phrasing "be a constructor" is inapplicable. Your "workhorse" will be an
instance of a class, which must be constructed before it can be used.
instance of it), a method with the same name of the class, or a method
with an arbitrary name. Apparently it does not matter. The workhorse
It does matter. First of all, there should not be any method with the same
name as the owning class; that's a recipe for confusion with constructors.
Second, it is dangerous to spawn threads from inside a constructor. Memory
visibility is not guaranteed until the constructor completes. The only safe
option is to spawn a thread from a method invoked after construction is
complete (and with a different name from the class's constructors).
does not do GUI-sh things of its own (except updating some gadgets in
the existing GUI, simplest case is writing messages to a message area).
"Does not do X except for Y" means "Does do X". The doublespeak increases the
risk of bugs in your code.
I am not sure if what I mean by instance is the same you mean. At the
The term "instance" has a well-defined and particular meaning in
object-oriented programming, and in Java specifically. It means an object
constructed on the heap. At the bottom, you obtain an instance by
constructing it (using a 'new' expression), and access it through a reference
to that instance.
markspace wrote:
On a more fundamental level, I think you should be using a SwingWorker.
Link to the Javadocs can be found upthread.
<http://java.sun.com/docs/books/tutorial/uiswing/misc/timer.html>
LC's No-Spam Newsreading account wrote:
I'll study those two things.
You might consider also reviewing the online Java tutorials and the Java
Language Specification (JLS) for the details of types and instances and how
they're constructed and referenced.
--
Lew