Exiting threads

O

Ouabaine

Hello all,

In my game, I want to display an animation when I am loading the data
(sounds and graphics). I plan to do this with another thread.
My question : is the thread exited (thread killed, all the resources
cleared) when you exit from the run() method? Or do I have to call a
specific function to clean it?

Thanks for your answers.

Francois
 
C

Chris

Ouabaine said:
Hello all,

In my game, I want to display an animation when I am loading the data
(sounds and graphics). I plan to do this with another thread.
My question : is the thread exited (thread killed, all the resources
cleared) when you exit from the run() method? Or do I have to call a
specific function to clean it?

Thanks for your answers.

Francois

When the run() method exits, the thread is dead and no longer consumes
thread-related resources. The thread object itself, though, may persist
if you still have a reference to it.

For example:

MyThread thread = new MyThread();
thread.start();

// Do other stuff here.
// Thread runs on its own, eventually dies.

// At this point, if the thread variable still points
// to an instance of MyThread, then it and everything it contains
// is still in memory.

// Do this:

thread = null;

// to make it eligible for garbage collection
 
L

Lew

Chris said:
When the run() method exits, the thread is dead and no longer consumes
thread-related resources. The thread object itself, though, may persist
if you still have a reference to it.

For example:

MyThread thread = new MyThread();
thread.start();

// Do other stuff here.
// Thread runs on its own, eventually dies.

// At this point, if the thread variable still points
// to an instance of MyThread, then it and everything it contains
// is still in memory.

// Do this:

thread = null;

Or better yet, just have the variable 'thread' pass out of scope.

Typical use:

public static void main( String [] args )
{
Runnable r = factory.createBasedOn( args );
Thread t = new Thread( r );
t.start();
}

't' goes out of scope after main() returns, so the variable reference
vanishes, enabling GC for the Thread object when it's finished.

This is idiomatically emphasized with

public static void main( String [] args )
{
Runnable r = factory.createBasedOn( args );
new Thread( r ).start();
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,767
Messages
2,569,573
Members
45,046
Latest member
Gavizuho

Latest Threads

Top