有两种java主要方法:
第一个:
RDD[Array[Set]]
第二个:
import java.util.concurrent.TimeUnit;
public class StopThread2 {
private static boolean stopRequested;
public static void main(String[] args)
throws InterruptedException {
Thread backgroundThread = new Thread(new Runnable() {
public void run() {
int i = 0;
while (!stopRequested)
System.out.println(i++);
}
});
backgroundThread.start();
TimeUnit.SECONDS.sleep(1);
stopRequested = true;
}
}
在我的Mac专业版中,结果是 :第一个pragram将在一秒钟之后停止,第二个将继续运行
我的java env是:
java version "1.6.0_65" Java(TM) SE Runtime Environment (build 1.6.0_65-b14-468-11M4833) Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-468, mixed mode)
对于相同的代码,我在32位jvm和64bit jvm中测试,结果不一样,为什么?
答案 0 :(得分:0)
stopRequested
必须为volatile
。否则,您启动的线程可能看不到主线程所做的stopRequested
更新。