This week's book giveaway is in the Jobs Discussion forum.
We're giving away four copies of Java Interview Guide and have Anthony DePalma on-line!
See this thread for details.
The moose likes Threads and Synchronization and the fly likes When a Thread Dies Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of Java Interview Guide this week in the Jobs Discussion forum!
JavaRanch » Java Forums » Java » Threads and Synchronization
Bookmark "When a Thread Dies" Watch "When a Thread Dies" New topic

When a Thread Dies

Gregg Bolinger
GenRocket Founder
Ranch Hand

Joined: Jul 11, 2001
Posts: 15302

I have a question about the lifetime of a thread and the Garbage Collector.
If I have something like the following:

And then somewhere else in my code I have:
MyThread thread = new MyThread();
So the thread runs, but it is not a infinite loop so when the execution ends inside the thread, does the thread die? And then is the thread object available for the Garbage Collector?
In case you are wondering why I am running a thread that does not have an infiniate loop of any kind like most threads probably will, I am using the SwingUtilities.invokeLater() from a JButton actionEvent in quering a Database that takes a little time, I don't want the ActionEvent to be hung up on waiting for that process to finish, but it does finish. So the thread should end.
Anyway, that is my question.
[ July 31, 2002: Message edited by: Gregg Bolinger ]

GenRocket - Experts at Building Test Data
John Dale
Ranch Hand

Joined: Feb 22, 2001
Posts: 399
The thread dies when the run() method exits, and, like any other object, the thread and Runnable object are each eligable for GC when there are no reference to it (except from other object eligable for GC).
Mr. C Lamont Gilbert
Ranch Hand

Joined: Oct 05, 2001
Posts: 1170

Threads die when the run method ends. If you never started the thread, then the thread object will die when the thread group it belongs to dies.
Using swingInvoke later does not actually create a new thread, it just executes the Run method of your object inside of the swing thread, later
I agree. Here's the link:
subject: When a Thread Dies
It's not a secret anymore!