<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    有條件的同步方法

    ??? 在做多線程程序時我們可能要對某段代碼的同步是有條件的,只有對滿足同一條件的請求才排隊訪問,對與不滿足這樣條件的請求可以并發訪問,在處理這樣的需求的時候我們可以容易的想到,對于這個特定的條件做一個抽象,讓它作為我們同步鎖。下面的代碼可以說明這個處理過程:
    ?1?
    ?2?//?定義鎖
    ?3?private?Map?locks?=?new?HashMap();
    ?4?private?Object?getLock(Object?key)?{
    ?5?????synchronized?(locks)?{
    ?6?????????if?(!locks.containsKey(key))?{
    ?7?????????????locks.put(key,?new?Object());
    ?8?????????}
    ?9?????????return?locks.get(key);
    10?????}
    11?}
    12?
    13?//?需要同步的代碼
    14?synchronized?(getLock(id))?{
    15?????//?TODO
    16?}
    17?
    18?

    posted on 2006-10-09 14:27 Xueping Yang 閱讀(1279) 評論(6)  編輯  收藏 所屬分類: 技術文章

    評論

    # re: 有條件的同步方法 2006-10-09 16:28 GHawk

    Java 5開始內置的java.util.concurrent.locks包里面有pthread-like的Lock和Condition,很方便。  回復  更多評論   

    # re: 有條件的同步方法 2006-10-09 17:54 Xueping Yang

    @GHawk
    對于我的這個需求來說,上面的代碼可能已經是最簡單的呢,要是用concurrent的話必須要tiger啦。  回復  更多評論   

    # re: 有條件的同步方法 2006-10-09 19:41 stoneshao

    呵呵,有意思,畢竟現在的應用服務器都是在jdk1.4下,不能用tiger  回復  更多評論   

    # re: 有條件的同步方法 2006-10-09 19:42 stoneshao

    但是有一個專門做線程同步的包:concurrent.jar,沒有仔細研究它的實現,應該有類似的實現  回復  更多評論   

    # re: 有條件的同步方法 2006-10-09 22:36 Alex

    上面的所有方法都是同步的,什么時候不同步,代碼里體現了么?
    synchronized (getLock(id)) {
    15 // TODO
    16 }
    是同步的,它調用的getLock(id)里面也都是同步的,除非在方法
    synchronized (locks) {}的外面再加一個其他條件的代碼才能算是吧?

    還是你省略了這些代碼?  回復  更多評論   

    # re: 有條件的同步方法 2006-10-10 10:10 GHawk

    @stoneshao
    util.concurrent 的確有一個backport可以在1.4jvm上使用
    http://dcl.mathcs.emory.edu/util/backport-util-concurrent

    自己實現多線程的東西還是比較容易出現問題的,debug和性能分析都可能花費大量的時間,個人感覺還是用現有的庫更容易一些。  回復  更多評論   


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


    網站導航:
     

    導航

    <2006年10月>
    24252627282930
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    統計

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    文章分類

    技術

    朋友

    搜索

    最新評論

    主站蜘蛛池模板: 真实国产乱子伦精品免费| 免费一区二区无码视频在线播放 | 无码免费又爽又高潮喷水的视频 | 四色在线精品免费观看| 亚洲av一本岛在线播放| 青青在线久青草免费观看| 日韩精品一区二区亚洲AV观看| 91精品全国免费观看青青| 亚洲人成图片小说网站| 最近的2019免费中文字幕| 亚洲码国产精品高潮在线| 午夜精品一区二区三区免费视频| 亚洲2022国产成人精品无码区| 人人玩人人添人人澡免费| 亚洲综合久久久久久中文字幕| 91短视频免费在线观看| 久久久久久亚洲精品影院| 日韩精品免费电影| 一个人免费观看www视频| 亚洲AV永久无码区成人网站| 亚洲欧洲免费视频| 亚洲一区欧洲一区| 国产大片线上免费看| 中文字幕不卡高清免费| 中文字幕亚洲综合精品一区| 24小时免费直播在线观看| 美女露隐私全部免费直播| 久久精品国产亚洲一区二区| 0588影视手机免费看片| 色偷偷噜噜噜亚洲男人| 在线亚洲午夜理论AV大片| 免费能直接在线观看黄的视频| 亚洲性线免费观看视频成熟| 亚洲人成影院在线无码观看| 久久精品视频免费播放| 亚洲乱码无人区卡1卡2卡3| 亚洲伊人成无码综合网 | 99热这里只有精品6免费| 亚洲欧洲无卡二区视頻| 亚洲人成影院在线无码按摩店| 久久受www免费人成_看片中文|