¸üÐÂʱ¼ä:2023Äê10ÔÂ13ÈÕ09ʱ19·Ö À´Ô´:ÀÖÓãµç¾º ä¯ÀÀ´ÎÊý:

¡¡¡¡volatile¹Ø¼ü×ÖÓÃÓÚ¸æËß±àÒëÆ÷²»Òª¶Ô±»ÉùÃ÷ΪvolatileµÄ±äÁ¿½øÐÐÓÅ»¯£¬ÒòΪÕâЩ±äÁ¿¿ÉÄܻᱻÍⲿÒòËØ¸Ä±ä£¬¶ø²»ÊÇÓɳÌÐòÄÚ²¿´úÂë¿ØÖÆ¡£Ëüͨ³£ÓÃÓÚ¶àÏ̱߳à³ÌÖУ¬ÒÔÈ·±£Ïß³ÌÖ®¼ä¶Ô±äÁ¿µÄ·ÃÎÊÊǿɼûµÄ£¬µ«Ëü²¢²»Äܽ«·ÇÔ×Ó²Ù×÷±ä³ÉÔ×Ó²Ù×÷¡£
¡¡¡¡ÔÚ¶àÏ̻߳·¾³ÖУ¬Ò»¸ö²Ù×÷Èç¹ûÊÇÔ×Ó²Ù×÷£¬Òâζ×ÅËüҪôÍêȫִÐУ¬ÒªÃ´ÍêÈ«²»Ö´ÐУ¬Ã»ÓÐÖмä״̬¡£volatile±äÁ¿È·±£Ïß³ÌÖ®¼äµÄ¿É¼ûÐÔ£¬µ«²»±£Ö¤Ô×ÓÐÔ¡£Èç¹ûÎÒÃÇÏ£Íû½«·ÇÔ×Ó²Ù×÷±ä³ÉÔ×Ó²Ù×÷£¬¿ÉÒÔʹÓû¥³âËø»òÔ×Ó²Ù×÷º¯Êý£¬¾ßÌåÈ¡¾öÓÚ±à³ÌÓïÑÔºÍÆ½Ì¨¡£
¡¡¡¡ÏÂÃæÊÇÒ»¸öʾÀý£¬ËµÃ÷volatileµÄ¿É¼ûÐÔ£¬ÒÔ¼°ÎªºÎËü²»ÄÜÓÃÀ´È·±£Ô×ÓÐÔ£º
public class VolatileExample {
private volatile int sharedValue = 0;
public void increment() {
sharedValue++;
}
public int getSharedValue() {
return sharedValue;
}
public static void main(String[] args) {
VolatileExample example = new VolatileExample();
Thread thread1 = new Thread(() -> {
for (int i = 0; i < 1000; i++) {
example.increment();
}
});
Thread thread2 = new Thread(() -> {
for (int i = 0; i < 1000; i++) {
example.increment();
}
});
thread1.start();
thread2.start();
try {
thread1.join();
thread2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Shared Value: " + example.getSharedValue());
}
}
¡¡¡¡ÔÚÉÏÊöʾÀýÖУ¬ÎÒÃÇʹÓÃÁËvolatileÐÞÊÎsharedValue±äÁ¿ÒÔÈ·±£ÆäÔÚ²»Í¬Ïß³ÌÖ®¼äµÄ¿É¼ûÐÔ¡£¾¡¹Ü volatile¿ÉÒÔÈ·±£Ïß³ÌÖ®¼ä¿´µ½×îеÄÖµ£¬µ«sharedValue++²Ù×÷ÈÔÈ»²»ÊÇÔ×Ó²Ù×÷£¬Òò´Ë×îÖյĽá¹û¿ÉÄÜ»áСÓÚÔ¤ÆÚµÄ2000¡£Òª±£Ö¤Ô×ÓÐÔ£¬Ó¦¸ÃʹÓÃËø»òÔ×Ó²Ù×÷ÀàÀ´Í¬²½increment²Ù×÷¡£
±±¾©Ð£Çø