Jim*_*Jim 1 java concurrency multithreading volatile
变量中是否volatile需要kill控制线程的执行?
public class MyThread extends Thread{
private boolean kill = false;
public void killThread(){
kill = true;
}
@Override
public void run(){
while(!kill){
//do stuff
}
}
}
Run Code Online (Sandbox Code Playgroud)
例如,如果在代码的其他部分(另一个线程),我theThreadRef.killThread();应该期望线程停止或由于没有声明为不可预测的结果?由于我更新了via 方法,因此我不确定.
谢谢 killvolatilekillkillThread
是的,kill是线程之间共享的变量,必须是volatile.但是,请考虑使用Java的本机中断机制,涉及Thread.interrupt()并Thread.interrupted()实现您的需求.那么你不需要保留自己的变量.