2

我有一个运行 Runnable 的线程,看起来像:

Runnable run = new Runnable() {
    @Override
    public void run() {
        functionCall();
    }

};
Thread thread = new Thread(run);
thread.start();

void functionCall() {
    for (int i=0; i<1000000; i++) System.out.println(i);
}

无论如何我都想阻止它。我已经尝试过,thread.interrupt()但我无法使它工作,因为该functionCall()方法并不真正取决于我(我不知道该函数内部是什么,这只是一个例子)。

据我所知,每个人都使用 volatile 布尔变量来检查它,但这个线程只执行一次,所以它不是我真正需要的。

4

1 回答 1

2

Thread.interrupt()需要调用线程以将控制权交给操作系统(用于 IO 访问、睡眠等)。因此,为了使用它,您需要确保您的线程执行此操作(即不仅仅是计算上的)。有关更多信息,请参阅此 JavaSpecialists条目。

于 2013-05-02T09:33:14.197 回答