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

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

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

    posts - 241,  comments - 116,  trackbacks - 0
    眾所周知hashMap 是線程不安全的,在多線程訪問的情況下,要做同步的處理
    ConcurrentHashMap get() 總能拿到最新的值,類似于關鍵字 volatile保證100%讀取到最新的數據

    如下用代碼說明:

     

    package com.iteye.javaso.demo;

    import java.util.concurrent.ConcurrentHashMap;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;

    public class CopyOfConCurrentHashMapThreadTest2 {

        ConcurrentHashMap<String, String> map = new ConcurrentHashMap<String, String>();

        public static void main(String args[]) {
            CopyOfConCurrentHashMapThreadTest2 test = new CopyOfConCurrentHashMapThreadTest2();
            Runnable sleep = new ThreadSleep2(test, "第一條線程");

            ThreadSecond2 charge2 = new ThreadSecond2(test, "改變值的第2線程");
            ThreadSecond2 charge3 = new ThreadSecond2(test, "改變值的第3線程");
            ThreadSecond2 charge4 = new ThreadSecond2(test, "改變值的第4線程");

            ThreadSecond23 chargeXX = new ThreadSecond23(test, "改變值的XXXX線程");

            ExecutorService exc = Executors.newFixedThreadPool(5);

            exc.execute(sleep);

            exc.execute(charge3);
            exc.execute(charge2);
            exc.execute(chargeXX);
            exc.execute(charge4);
            exc.shutdown();
            System.out.println("洗洗睡吧----------------");
            try {
                Thread.sleep(16000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println("多個線程后,最終運行結果:" + test.map.get("firstKey"));
        }

        public  void put(String value, int state) {
            map.put("firstKey", value);

            // Thread thread= Thread.currentThread();
            if (state == 0) {
                System.out.println("開始睡覺了--------------");
                try {
                    Thread.sleep(4000);
                    System.out.println("睡醒了-------");
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }

        }

    }

    class ThreadSleep2 extends Thread {

        ConcurrentHashMap<String, String> map;

        public ThreadSleep2(ConcurrentHashMap<String, String> map, String threadName) {

            this.map = map;
            this.name = threadName;
        }

        CopyOfConCurrentHashMapThreadTest2 test;

        public ThreadSleep2(CopyOfConCurrentHashMapThreadTest2 test,
                String threadName) {

            super(threadName);
            this.test = test;
            this.name = threadName;
        }

        @Override
        public void run() {
            Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
            System.out.println("---------------進入第一條線程-----睡十秒先--------");

            System.out.println("第一條線程未設置前值為:*** " + test.map.get("firstKey"));

            test.put(name, 0);

            System.out.println("第一條線程執行完畢  Map中值為:" +test.map.get("firstKey"));

        }

        String name = "";

        public String toString() {

            return "當前線程的名字是:" + name;
        }

    }

    class ThreadSecond2 extends Thread {

        ConcurrentHashMap<String, String> map;

        public ThreadSecond2(ConcurrentHashMap<String, String> map,
                String threadName) {
            super(threadName);
            this.map = map;
            this.name = threadName;
        }

        CopyOfConCurrentHashMapThreadTest2 test;

        public ThreadSecond2(CopyOfConCurrentHashMapThreadTest2 test,
                String threadName) {

            super(threadName);
            this.test = test;
            this.name = threadName;
        }

        @Override
        public void run() {
            System.out.println("-----------進入其它線程---------");
            System.out.println("當前線程是:" + this.name + " 未設置map前值為:"
                    + test.map.get("firstKey"));

            test.put(name, 2);
            System.out.println("hashMap中 firstKey值為:" + name);
        }

        String name = "";

        public String toString() {

            return "當前線程的名字是:" + name;
        }
    商賬追收


    }

    class ThreadSecond23 extends Thread {

        ConcurrentHashMap<String, String> map;

        public ThreadSecond23(ConcurrentHashMap<String, String> map,
                String threadName) {
            super(threadName);
            this.map = map;
            this.name = threadName;
        }

        CopyOfConCurrentHashMapThreadTest2 test;

        public ThreadSecond23(CopyOfConCurrentHashMapThreadTest2 test,
                String threadName) {

            super(threadName);
            this.test = test;
            this.name = threadName;
        }

        @Override
        public void run() {
            System.out.println("-----------進入XXXXXXX線程---------");
            System.out.println("當前線程是:" + Thread.currentThread().getName());
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            test.put(name, 2);
            System.out.println("hashMap中 firstKey值為:" + name);
        }

        String name = "";

        public String toString() {

            return "當前線程的名字是:" + name;
        }

    }
    posted on 2011-06-03 09:28 墻頭草 閱讀(766) 評論(0)  編輯  收藏

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


    網站導航:
     
    人人游戲網 軟件開發網 貨運專家
    主站蜘蛛池模板: 精品一区二区三区免费观看| 免费无码国产V片在线观看| 日韩视频免费在线观看| 亚洲日韩欧洲乱码AV夜夜摸| av网站免费线看| 亚洲熟妇av一区二区三区| 在线观看免费黄网站| 国产精品亚洲片在线| 久久中文字幕免费视频| 亚洲AV日韩AV天堂久久| 啦啦啦完整版免费视频在线观看| 在线观看亚洲一区二区| 韩国免费一级成人毛片| 亚洲高清国产拍精品熟女| 又粗又黄又猛又爽大片免费| 五月天婷婷免费视频| 亚洲AV无码一区二区二三区入口 | 精品亚洲国产成AV人片传媒| 99re6热视频精品免费观看| 亚洲天堂一区在线| 日韩精品无码人妻免费视频| 黄色a级片免费看| 亚洲产国偷V产偷V自拍色戒| 18女人水真多免费高清毛片| 亚洲中文字幕一二三四区| 亚洲AV无码乱码在线观看牲色| 中文字幕在线观看免费| 亚洲an日韩专区在线| 免费a在线观看播放| 国产午夜免费高清久久影院| 亚洲一级特黄特黄的大片| 亚洲日韩VA无码中文字幕| 日韩插啊免费视频在线观看 | 久久亚洲AV成人无码| 无码国模国产在线观看免费| 男女一边桶一边摸一边脱视频免费| 亚洲天堂视频在线观看| 国产伦一区二区三区免费| 久久久久久久99精品免费观看| 亚洲精品又粗又大又爽A片| 国产精品亚洲аv无码播放|