jialisoftw

          Java多線程對耗時方法的同步問題

          各位大牛,小弟現在遇到一個問題,就是使用多線程調用一個耗時的方法,如何同步?代碼大體如下: 
          Java代碼:  
          1.   final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(10);   
          2. final BusinessService service = new BusinessService();   
          3. for(int i = 0; i < 10; i++)  
          4. {  
          5.     scheduler.scheduleWithFixedDelay(new Runnable(){  
          6.         @Override  
          7.         public void run() {  
          8.             service.handleBusiness();  
          9.         }  
          10.           
          11.     }, i, 5, TimeUnit.MINUTES);  
          12. }  
          這個時候,如果在handleBusiness()方法上加上
          Java代碼:  
          synchronized  
          ,其它線程就進不了這個方法,因為這個方法需要耗時5分鐘左右,大家幫忙想想有啥好的解決辦法,能讓所有線程不等待,就可以調用這個方法又保持原子操作.
          解決方法:handleBusiness()寫成線程安全的就好了。

          posted on 2013-01-15 15:41 飛豬一號 閱讀(1632) 評論(3)  編輯  收藏

          評論

          # re: Java多線程對耗時方法的同步問題 2013-01-16 10:13 imxylz

          既然是非線程安全的代碼,必然需要同步,這樣多線程執行和單線程沒有分別。改寫代碼為線程安全才是正確的道理。

          實在沒有辦法,應該降低handleBusiness里面的鎖的粒度,最終需要同步的邏輯越少越好。  回復  更多評論   

          # re: Java多線程對耗時方法的同步問題 2013-01-29 12:15 I Love me

          <script>alert();</script>  回復  更多評論   

          # re: Java多線程對耗時方法的同步問題 2013-03-06 10:40 紅色石頭

          handleBusiness()寫成線程安全的就好了。哈哈,是百度上弄的嗎?  回復  更多評論   


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


          網站導航:
           

          導航

          <2013年1月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          統計

          常用鏈接

          留言簿

          隨筆檔案

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 虹口区| 同德县| 辽阳县| 灵川县| 武冈市| 白水县| 淄博市| 固镇县| 武胜县| 克什克腾旗| 新干县| 汽车| 尚志市| 靖宇县| 邹平县| 青岛市| 余干县| 崇礼县| 新平| 凤庆县| 临沧市| 望奎县| 新竹市| 武乡县| 灵山县| 固镇县| 楚雄市| 公主岭市| 鄯善县| 庐江县| 原平市| 平舆县| 叙永县| 磴口县| 康乐县| 吉木萨尔县| 廉江市| 鞍山市| 梓潼县| 陕西省| 苏尼特左旗|