在我的Android应用程序中,我有一个扩展Thread
的类,当有已建立的互联网连接(3G / WIFI)时运行。
当加载应用程序时,如果建立了互联网连接,我会像这样实例化这个类:
MyThread thread = new MyThread(); // (it calls its own start() method)
在线程中,如果连接丢失,我想销毁Thread
。我被告知不要运行finalize()
,我如何销毁它以使thread == null
成立?
编辑:我之所以问的原因是,稍后我想重新启动线程,以防连接返回,并检查(thread == null)
是否容易。我可以使用一个标志来指示线程需要重新启动或检查它是否被中断。感谢您提供有用的评论。
答案 0 :(得分:1)
通常,您不是Thread
的子类。您创建了Runnable
,并将其传递到Thread
对象,或者更好的是ExecutorService
。
但是在线程完成后你不必担心清理,它将由垃圾收集器自动处理。如果你想让你自己的本地引用为null,那么你自己就把它归零,或者更好的是,不要坚持下去。
new Thread( new Runnable() {
public void run() {
// put your stuff here
}
} ).start();
答案 1 :(得分:1)
试试这个,
一个thread of execution will live until it has finished executing its run() method
,然后
它要么移动到dead stat
e,要么移到thread pool
。
使用run()
控制boolean variable
方法总是更好。
例如:
boolean isRunning = true;
new Thread(new Runnable()
{
public void run()
{
while(isRunning)
{
// Keep doing your work here....
if (!isRunning){
break;
}
}
}
}).start();