氟塑料離心泵www.buybeng.com

          jquery教程http://www.software8.co/wzjs/jquery/

          java的volatile與多線程

          Java語言規范中指出:為了獲得最佳速度,允許線程保存共享成員變量的私有拷貝,而且只當線程進入或者離開同步代碼塊時才與共享成員變量的原始值對比。 
          Volatile修飾的成員變量在每次被線程訪問時,都強迫從共享內存中重讀該成員變量的值。而且,當成員變量發生變化時,強迫線程將變化值回寫到共享內存。這樣在任何時刻,兩個不同的線程總是看到某個成員變量的同一個值。 
          原文參考自站長網http://www.software8.co/wzjs/java/3041.html
          下面是個例子:恢復注釋的任何一處都可以實現同步,就是讓程序停下來 
          Java代碼:  
          1. import java.util.concurrent.TimeUnit;  
          2.   
          3. // Broken! - How long would you expect this program to run ?  
          4. public class StopThread {          
          5. //  private static volatile   boolean stopRequested;  // value: false  
          6.     private static   boolean stopRequested;  // value: false   
          7.     public static void main(String... args) throws InterruptedException {      
          8.         Thread backgroundThread = new Thread(new Runnable() {  
          9.             public synchronized  void test () {  
          10.             }  
          11.               
          12.             @Override  
          13.             public void run() {  
          14.                 int i = 0;  
          15.                 while(!stopRequested){  
          16. //                  test();  
          17.                     i++;  
          18.                 }  
          19.             }  
          20.         });  
          21.         backgroundThread.start();  
          22.         TimeUnit.SECONDS.sleep(1);  
          23.         stopRequested = true;  
          24.           
          25.     }  
          26. }  
          當然最容易理解的是用同步的方法: 
          Java代碼:  
          1. import java.util.concurrent.TimeUnit;  
          2.   
          3. // Broken! - How long would you expect this program to run ?  
          4. public class StopThread {  
          5.   
          6.     private static boolean stopRequested;  // value: false  
          7.       
          8.     public static synchronized void requestStop() {  
          9.         stopRequested = true;  
          10.     }  
          11.     public static synchronized boolean stopRequested() {  
          12.         return stopRequested;  
          13.     }  
          14.     public static void main(String... args) throws InterruptedException {  
          15.           
          16.         Thread backgroundThread = new Thread(new Runnable() {  
          17.               
          18.             @Override  
          19.             public void run() {  
          20.                 int i = 0;  
          21.                 while(!stopRequested())  
          22.                     i++;  
          23.             }  
          24.         });  
          25.           
          26.         backgroundThread.start();  
          27.           
          28.         TimeUnit.SECONDS.sleep(1);  
          29.         requestStop();  
          30.     }  
          31. }  

          posted on 2013-02-22 18:17 你爸是李剛 閱讀(1101) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2013年2月>
          272829303112
          3456789
          10111213141516
          17181920212223
          242526272812
          3456789

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          文章檔案

          技術網站

          行業網站

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          站長網 氟塑料離心泵 注塑機 液晶廣告機
          主站蜘蛛池模板: 乐平市| 孝昌县| 商都县| 赤城县| 邹城市| 镶黄旗| 慈利县| 鄂托克前旗| 怀柔区| 诸城市| 延安市| 汾阳市| 沂源县| 宕昌县| 嘉义县| 临江市| 驻马店市| 赫章县| 天峻县| 周至县| 延吉市| 星座| 湘西| 黄龙县| 界首市| 农安县| 南汇区| 宝坻区| 东平县| 白银市| 渝中区| 招远市| 灵台县| 靖宇县| 辰溪县| 蒙山县| 新乐市| 珲春市| 泰兴市| 隆昌县| 南投县|