package effectivejava;import java.util.concurrent.TimeUnit;/*** 66条线程同步* @author skywalker**/public class Thread66 {//volatile关键字可以private static boolean flag = true;/*** 同步也可以*/public synchronized static boolean getFlag() {return flag;}public synchronized static void setFlag(boolean flag) {Thread66.flag = flag;}private static int i = 0;/*** 如果没有惊醒任何操作,那么此程序不会停止,因为boolean类型虽然是院子的,但是虚拟机并不会保证一个线程的修改* 对于其它线程马山就是可见的* @param args* @throws InterruptedException*/public static void main(String[] args) throws InterruptedException {Runnable thread = new Runnable() {@Overridepublic void run() {while(getFlag()) {i ++;}}};new Thread(thread).start();TimeUnit.SECONDS.sleep(1);setFlag(false);System.out.println(i);}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。