When a thread is alive, how can I stop the thread? I have given like
if(thread.isAlive()){
thread.stop();
}
but the method stop is deprecated and is throwing an exception
01-21 14:12:40.188: ERROR/global(535): Deprecated Thread methods are not supported.
01-21 14:12:40.188: ERROR/global(535): java.lang.UnsupportedOperationException
01-21 14:12:40.188: ERROR/global(535): at java.lang.VMThread.stop(VMThread.java:85)
01-21 14:12:40.188: ERROR/global(535): at java.lang.Thread.stop(Thread.java:1379)
01-21 14:12:40.188: ERROR/global(535): at java.lang.Thread.stop(Thread.java:1344)
How can we solve this?
Here's what the Java people have to say about why not to call thread.stop and what to do instead.
http://download.oracle.com/javase/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html
The short answer is, you allow the thread entry point function to return.
In a non looping thread implmentation, you can always use some thing like this at the very beginning of thread code as:
Better you have to use this method of thread,to stop it.
So that you can also save the state of thread.
In general, you don't forcibly stop threads because it's dangerous. You set a flag that tells the thread in question to exit from it's thread loop under controlled circumstances.
Your thread loop looks something along these lines:
And somewhere else you set the
shouldContinue
variable and wait for the thread to finish:(All this is likely not correct Java, since I don't do Java. View it as pseudo code and modify for your actual language/thread library/etc.)