结束类实例的正确方法?

时间:2012-06-18 17:02:35

标签: java android multithreading

在我的Android应用程序中,我有一个扩展Thread的类,当有已建立的互联网连接(3G / WIFI)时运行。

当加载应用程序时,如果建立了互联网连接,我会像这样实例化这个类:

 MyThread thread = new MyThread(); //  (it calls its own start() method)

在线程中,如果连接丢失,我想销毁Thread。我被告知不要运行finalize(),我如何销毁它以使thread == null成立?


编辑:我之所以问的原因是,稍后我想重新启动线程,以防连接返回,并检查(thread == null)是否容易。我可以使用一个标志来指示线程需要重新启动或检查它是否被中断。感谢您提供有用的评论。

2 个答案:

答案 0 :(得分:1)

通常,您不是Thread的子类。您创建了Runnable,并将其传递到Thread对象,或者更好的是ExecutorService

但是在线程完成后你不必担心清理,它将由垃圾收集器自动处理。如果你想让你自己的本地引用为null,那么你自己就把它归零,或者更好的是,不要坚持下去。

new Thread( new Runnable() {
    public void run() {
        // put your stuff here
    }
} ).start();

答案 1 :(得分:1)

试试这个,

  1. 一个thread of execution will live until it has finished executing its run() method,然后 它要么移动到dead stat e,要么移到thread pool

  2. 使用run()控制boolean variable方法总是更好。

    例如:

       boolean isRunning = true;
    
       new Thread(new Runnable()
    
           {
    
       public void run()
    
          {
    
         while(isRunning)
    
             {
    
              // Keep doing your work here....
    
                   if (!isRunning){
    
                            break;
                        }
    
    
                  }
    
      }
    

    }).start();