氟塑料離心泵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

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          文章檔案

          技術網站

          行業網站

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          站長網 氟塑料離心泵 注塑機 液晶廣告機
          主站蜘蛛池模板: 屯留县| 噶尔县| 新民市| 灵宝市| 南部县| 八宿县| 疏附县| 苏尼特左旗| 广州市| 桓台县| 广汉市| 高碑店市| 辽阳县| 肥城市| 犍为县| 巫溪县| 威远县| 镇康县| 田东县| 怀集县| 栖霞市| 依安县| 彝良县| 桃源县| 石首市| 正镶白旗| 青铜峡市| 竹山县| 长阳| 老河口市| 丹阳市| 白朗县| 芜湖县| 罗江县| 青河县| 商都县| 慈溪市| 广德县| 霞浦县| 兰溪市| 昌乐县|