我有一个运行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上执行,所以它并不是我真正需要的。
答案 0 :(得分:2)
Thread.interrupt()
要求调用线程以控制OS(用于IO访问,睡眠等)。因此,为了使用它,您需要确保您的线程执行此操作(即,不仅仅是计算上的)。有关详细信息,请参阅this JavaSpecialists条目。