ͻ񻣼
### ʲôÊÇ CAS + È«³ÆÊÇ Compare-And-Swap£¬¶ÔÊý¾Ý½øÐÐ **Ô×ÓÐÔ** ²Ù×÷£¬sun.misc.Unsafe ÀàµÄ¸÷¸ö native ·½·¨ÊµÏÖµÄ + ±È½Ïµ±Ç°¹¤×÷ÄÚ´æÖеÄÖµºÍÖ÷ÄÚ´æÖеÄÖµ£¬Èç¹ûÏàͬÔòÖ´Ðй涨²Ù×÷£¬·ñÔòʲô¶¼²»×ö»òÕßÖØÀ´Ò»´Î£¬ÖØÀ´¾ÍÊÇ×ÔÐýËøÁË [java¸÷ÖÖËø ÔĶÁÈ«ÎÄ
ͻ񻣼
### ÀÖ¹ÛËø ±¯¹ÛËø Õâ²»ÊÇa56爆大奖在线娱乐¾ßÌåµÄËø£¬ÊÇÒ»¸ö¹ãÒåµÄ¸ÅÄ¿ÉÒÔÈÏΪËùÓеÄËø¶¼ÊDZ¯¹Û»òÀֹ۵ģ¬java Öоø´ó²¿·ÖËø¶¼ÊDZ¯¹ÛËø£¨synchronized¡¢ReentrantLockµÈ£©£»Ò²ÓÐÀÖ¹ÛËø£¨Ô×ÓÀàµÄµÝÔö¡¢¶ÁдËøµÄ¶ÁËø£©£¬java µÄÀÖ¹ÛËø¶¼ÊÇ cas ʵÏÖµÄ **ÀÖ¹ÛËø** ¹ËÃû˼Ò壬ÀÏÊÇ ÔĶÁÈ«ÎÄ
ͻ񻣼
¿ÉÒÔ±£Ö¤¶àÏß³ÌµÄ **¿É¼ûÐÔ¡¢ÓÐÐòÐÔ**£¬²»Äܱ£Ö¤Ô×ÓÐÔ ### Ϊʲô²»Äܱ£Ö¤Ô×ÓÐÔ a56爆大奖在线娱乐µ¥¶ÀµÄ¶Áд²Ù×÷¶¼»á¼°Ê±Ë¢Ðµ½Ö÷´æÖУ¬ºóÐø²Ù×÷Èç¹ûʧ°Ü£¬Ã»ÓÐʲô»Ø¹ö»úÖÆ£¨¸Ð¾õÀíËùµ±È»£¬µ«ÊÇÏÖÔÚÐÐÒµ¾í£¬ÃæÊÔʱ¾ÍÒªÎÊÄãzzz£© ### Ôõô±£Ö¤¿É¼ûÐ﵀ ÄÚ´æÆÁÕϱ£Ö¤µÄ¡£Ê²Ã´ÊÇÄÚ´æÆÁÕÏ£¿¾ÍÊÇÒ»ÌõÌØÊâµÄ cpu ÔĶÁÈ«ÎÄ
ͻ񻣼
### ×ܽá + Ò»¸öËø¶ÔÏóÖ»ÄÜͬʱ±»Ò»¸öÏ̳߳ÖÓУ¬·ÖΪ¶ÔÏóËøºÍÀàËø - **¶ÔÏóËø**£ºa56爆大奖在线娱乐¶ÔÏ󶼿ÉÒÔ×÷ΪËø£¨¼¸¸ö²»Í¬µÄ¶ÔÏó¾ÍÊǼ¸¸öËø£© - **ÀàËø**£º×Ö½ÚÂë¶ÔÏóÒ²ÄÜ×÷ΪËø£¨È«¾ÖΨһ£© + ͬ²½·½·¨²»ÄÜ×Ô¶¨ÒåËø£¬Ö»ÄÜÊÇĬÈϵÄËø£¨·Ç¾²Ì¬£ºthis£¬¾²Ì¬£ºclass£©£»Í¬²½´úÂë¿éĬÈϵÄËøºÍ·½·¨Ò»Ñù ÔĶÁÈ«ÎÄ
ͻ񻣼
> ¶àÖÖ·½Ê½¿ÉÒÔÍê³ÉÏß³Ìͬ²½£¬´«Í³·½·¨Êǹؼü×Ö synchronized Íê³ÉµÄ£¬¿ÉÒÔÊÇͬ²½·½·¨Ò²¿ÉÒÔÊÇͬ²½´úÂë¿é > »¹¿ÉÒÔÓÃjucÏÂḬ̈߳²È«µÄ×èÈû¶ÓÁУ¬Ò²¿ÉÒÔʹÓà volatile+cas ### ͬ²½·½·¨ ```java @Data @AllArgsConstructor @NoArgsCon ÔĶÁÈ«ÎÄ
ͻ񻣼
> Ïß³ÌÖжϷ½·¨±»ÆúÓã¬Èç¹ûҪʵÏָù¦ÄÜÐèÒªÊÖ¶¯ÊµÏÖ£¬a56爆大奖在线娱乐˼·ÊǶ¨ÒåÒ»¸ö²¼¶ûÖµ±äÁ¿£¨¶ÔÍâÌṩ·½·¨Ð޸ıäÁ¿Öµ£©Ã¿´Î×öÒµÎñ¶¼ÒªÅжϸã¬Èç¹ûΪ true ˵Ã÷²»ÐèҪֹͣ£¬Èç¹ûΪ false ¾ÍÍ£Ö¹ ```java class MyThread2 implements Runnable{ // ¶¨ÒåÒ»¸ö±äÁ¿ ÔĶÁÈ«ÎÄ
ͻ񻣼
#### ¶à¸öÏß³ÌÐ×÷¹¤×÷³¡¾°ºÜ¶à£¬±ÈÈç±£Ö¤Ïß³ÌÖ´ÐеÄÏȺó˳Ðò£¬Éú²úÕßÏû·ÑÕßµÈ ### join() ```java public class Main { public static void main(String[] args) { ThreadA threadA = new ThreadA( ÔĶÁÈ«ÎÄ
ͻ񻣼
## Ïß³Ì״̬ `java.lang.Thread.State` ÀïÃ÷È·ÁËÏ̵߳ĸ÷¸ö״̬ÒÔ¼°Ôõô½øÈëºÍÍ˳ö¸÷¸ö״̬ ```java public enum State { // ³õʼ»¯×´Ì¬£¬Ï̴߳´½¨Ö®ºóµÄ״̬£¬new Thread() Ö®ºó½øÈë NEW, // ¾ÍÐ÷״̬£¬Ïß³ÌÕýÔÚÔËÐлòµÈ´ý CPU ÔĶÁÈ«ÎÄ