0

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

加载应用程序时,如果建立了 Internet 连接,我会像这样实例化该类:

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

在线程中,如果连接丢失,我想销毁Thread. 我被告知不要跑finalize(),我将如何摧毁它,这thread == null是真的?


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

4

2 回答 2

1

通常,您不会子类化Thread. 您创建一个Runnable,并将其传递给一个Thread对象,或者更好的是,一个ExecutorService.

但是您不必担心线程完成后的清理工作,它会由垃圾收集器自动处理。如果您希望自己的本地引用为空,只需自己将其清空,或者更好的是,不要坚持下去。

new Thread( new Runnable() {
    public void run() {
        // put your stuff here
    }
} ).start();
于 2012-06-18T17:10:10.157 回答
1

试试这个,

  1. A thread of execution will live until it has finished executing its run() method,然后它要么移动到dead state要么移动到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();

于 2012-06-18T18:26:05.597 回答