package Thread.Basic; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /* * ç¨synchronizeæ¥ä¿®å¤ç¨åºï¼è¯æå ¶å®å®å ¨ç * */ public class AtomicityTest implements Runnable{ private volatile int i=0; //return iæ¯ååæ§çæä½ï¼ä½æ¯ç¼ºå°åæ¥ä½¿å ¶æ°å¼å¨ä¸ç¨³å®çä¸é´ç¶æè¢«è·å public synchronized int getValue(){ return i; } //æ¤æ¹æ³è¯å®æ¯è¦åæ¥ç //i++æ¯éååæ§çæä½ï¼å æ¤è¦å°i设为volatileåï¼æ¯æ¬¡å¢å é½å·æ°å°å åä¸ï¼ä¿è¯å¯è§æ§ private synchronized void evenIncrement(){ i++; i++; } public void run() { while(true){ evenIncrement(); } } public static void main(String[] args) { ExecutorService executorService=Executors.newCachedThreadPool(); AtomicityTest auTest=new AtomicityTest(); executorService.execute(auTest); while(true){ int val=auTest.getValue(); System.out.println(val); //妿ä¸é¢è¿è¡æ£ç¡®çè¯ï¼ä¸å¯è½åºç°å¥æ° if(val%2!=0){ System.out.println(val); System.exit(0); } } } }