0

假设在我的应用程序的各个方面,我创建并启动了一个新的可运行文件,如下所示:

new Thread(new Runnable() { 
    public void run() {
    while(true) {
       //do lots of stuff
       //draw lots of stuff on screen, have a good ol time
       //total loop processing time abt 1250-1500ms
       //check for conditions to stop the loop, break;
   }    }   }

break;现在,除了在我的 while 循环中之外,还有什么方法可以在执行过程中终止该线程?我希望能够立即从父线程中明确地杀死它,就像用户刚刚请求加载不同的地图一样。在每 5 行左右的代码之后插入一个if (stopFlag) break;(在父线程中设置)感觉很笨拙。

我偷看了 Runnable 和 Thread 的方法,我就是看不到它。有人知道一个很棒的技巧吗?

4

3 回答 3

3

您可以使用AsyncTask并调用cancel来取消线程。

于 2011-05-10T21:50:31.573 回答
0

Instead of while (true) you may check for a condition or a flag that would be changed properly when the Thread/Runnable should be stopped. This seems to be the suggested strategy since Thread.stop() has been deprecated.

于 2011-05-10T22:05:37.463 回答
0

您可以按照建议使用 AsyncTask,这在这种情况下可能效果最好。我相信您也可以使用 interrupt() 方法,如果您不在 Android 中,最好使用该方法,但仍然需要明确检查它是否被中断:

Thread t = new Thread(new Runnable() {
    public void run() {
        while (true) {
            // do some stuff
            if (isInterrupted()) {
                break;
            }
        }
     });
t.start();

// Whoa! Need to stop that work!
t.interrupt();
于 2011-05-11T06:06:58.507 回答