仅使用一个操作停止一个线程

时间:2013-05-02 09:30:43

标签: java multithreading

我有一个运行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布尔变量来检查它,但是这个线程只在ONCE上执行,所以它并不是我真正需要的。

1 个答案:

答案 0 :(得分:2)

Thread.interrupt()要求调用线程以控制OS(用于IO访问,睡眠等)。因此,为了使用它,您需要确保您的线程执行此操作(即,不仅仅是计算上的)。有关详细信息,请参阅this JavaSpecialists条目。