LinkedList实现Queue并实现线程的同步

本文详细探讨了如何使用LinkedList实现Queue接口,并重点讲述了在多线程环境下如何实现线程同步,确保数据的一致性和安全性。
摘要由CSDN通过智能技术生成
package com.nil.test;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Queue;

public class TestMain {

    private static HashMap<String, String> propertiesCacheMap = new HashMap<String, String>();
    private static final Object ourMonitor = new Object();
    private static final Queue<Pair> ourTaskQueue = new LinkedList<Pair>();

    class Pair {
        Runnable action;
        public Pair(Runnable runnable) {
            action = runnable;
        }

    }
    class MyRunable implements Runnable {
        String fileName;

        public MyRunable(String name) {
            fileName = name;
        }

        @Override
        public void run() {
            for (int i = 0; i < 100; i++) {
                System.out.println("=====i am:"+fileName+" ==>"+i);
            }
            if(propertiesCacheMap.containsKey(fileName))
            {
                propertiesCacheMap.remove(fileName);
            }
        }
    }

    public static void main(String args[]) {
        TestMain test = new TestMain();
        for (int i = 0; i < 10; i++) {
            MyRunable runnable = test.new MyRunable("我是" + i);
            Pair pair = test.new Pair(runnable);
            writePropertiesCache(runnable.fileName, pair);
            
        }
        MyRunable runnable = test.new MyRunable("我是0" );
        Pair pair = test.new Pair(runnable);
        writePropertiesCache(runnable.fileName, pair);
        System.out.println("==0===result:"+getContainKey("我是0"));
        System.out.println("==9===result:"+getContainKey("我是9"));
        System.out.println("==0===result:"+getContainKey("我是0"));

    }
    
    public static String getContainKey(String name)
    {
        return propertiesCacheMap.get(name);
    }

    public static void writePropertiesCache(String fileName, Pair pair) {
        if (propertiesCacheMap.containsKey(fileName)) {

        } else {
            propertiesCacheMap.put(fileName, "false");
            synchronized (ourMonitor) {
                ourTaskQueue.offer(pair);
            }
            new Thread(new Runnable() {

                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    synchronized (ourMonitor) {
                        Pair p = ourTaskQueue.poll();
                        p.action.run();
                    }
                }
            }).start();
        }
    }
}



结果:

=====i am:我是0 ==>0
=====i am:我是0 ==>1
=====i am:我是0 ==>2
=====i am:我是0 ==>3
=====i am:我是0 ==>4
=====i am:我是0 ==>5
=====i am:我是0 ==>6
=====i am:我是0 ==>7
=====i am:我是0 ==>8
=====i am:我是0 ==>9
=====i am:我是0 ==>10
=====i am:我是0 ==>11
=====i am:我是0 ==>12
=====i am:我是0 ==>13
=====i am:我是0 ==>14
=====i am:我是0 ==>15
=====i am:我是0 ==>16
=====i am:我是0 ==>17
=====i am:我是0 ==>18
=====i am:我是0 ==>19
=====i am:我是0 ==>20
=====i am:我是0 ==>21
=====i am:我是0 ==>22
=====i am:我是0 ==>23
=====i am:我是0 ==>24
=====i am:我是0 ==>25
=====i am:我是0 ==>26
=====i am:我是0 ==>27
=====i am:我是0 ==>28
=====i am:我是0 ==>29
=====i am:我是0 ==>30
=====i am:我是0 ==>31
=====i am:我是0 ==>32
=====i am:我是0 ==>33
=====i am:我是0 ==>34
=====i am:我是0 ==>35
=====i am:我是0 ==>36
=====i am:我是0 ==>37
=====i am:我是0 ==>38
=====i am:我是0 ==>39
=====i am:我是0 ==>40
=====i am:我是0 ==>41
=====i am:我是0 ==>42
=====i am:我是0 ==>43
=====i am:我是0 ==>44
=====i am:我是0 ==>45
=====i am:我是0 ==>46
=====i am:我是0 ==>47
=====i am:我是0 ==>48
=====i am:我是0 ==>49
=====i am:我是0 ==>50
=====i am:我是0 ==>51
=====i am:我是0 ==>52
=====i am:我是0 ==>53
=====i am:我是0 ==>54
=====i am:我是0 ==>55
=====i am:我是0 ==>56
=====i am:我是0 ==>57
=====i am:我是0 ==>58
=====i am:我是0 ==>59
=====i am:我是0 ==>60
=====i am:我是0 ==>61
=====i am:我是0 ==>62
=====i am:我是0 ==>63
=====i am:我是0 ==>64
=====i am:我是0 ==>65
=====i am:我是0 ==>66
=====i am:我是0 ==>67
=====i am:我是0 ==>68
=====i am:我是0 ==>69
=====i am:我是0 ==>70
=====i am:我是0 ==>71
=====i am:我是0 ==>72
=====i am:我是0 ==>73
=====i am:我是0 ==>74
=====i am:我是0 ==>75
=====i am:我是0 ==>76
=====i am:我是0 ==>77
=====i am:我是0 ==>78
=====i am:我是0 ==>79
=====i am:我是0 ==>80
=====i am:我是0 ==>81
=====i am:我是0 ==>82
=====i am:我是0 ==>83
=====i am:我是0 ==>84
=====i am:我是0 ==>85
=====i am:我是0 ==>86
=====i am:我是0 ==>87
=====i am:我是0 ==>88
=====i am:我是0 ==>89
=====i am:我是0 ==>90
=====i am:我是0 ==>91
=====i am:我是0 ==>92
=====i am:我是0 ==>93
=====i am:我是0 ==>94
=====i am:我是0 ==>95
=====i am:我是0 ==>96
=====i am:我是0 ==>97
=====i am:我是0 ==>98
=====i am:我是0 ==>99
=====i am:我是1 ==>0
=====i am:我是1 ==>1
=====i am:我是1 ==>2
=====i am:我是1 ==>3
=====i am:我是1 ==>4
=====i am:我是1 ==>5
=====i am:我是1 ==>6
=====i am:我是1 ==>7
=====i am:我是1 ==>8
=====i am:我是1 ==>9
=====i am:我是1 ==>10
=====i am:我是1 ==>11
=====i am:我是1 ==>12
=====i am:我是1 ==>13
=====i am:我是1 ==>14
=====i am:我是1 ==>15
=====i am:我是1 ==>16
=====i am:我是1 ==>17
=====i am:我是1 ==>18
=====i am:我是1 ==>19
=====i am:我是1 ==>20
=====i am:我是1 ==>21
=====i am:我是1 ==>22
=====i am:我是1 ==>23
=====i am:我是1 ==>24
=====i am:我是1 ==>25
=====i am:我是1 ==>26
=====i am:我是1 ==>27
=====i am:我是1 ==>28
=====i am:我是1 ==>29
=====i am:我是1 ==>30
=====i am:我是1 ==>31
=====i am:我是1 ==>32
=====i am:我是1 ==>33
=====i am:我是1 ==>34
=====i am:我是1 ==>35
=====i am:我是1 ==>36
=====i am:我是1 ==>37
=====i am:我是1 ==>38
=====i am:我是1 ==>39
=====i am:我是1 ==>40
=====i am:我是1 ==>41
=====i am:我是1 ==>42
=====i am:我是1 ==>43
=====i am:我是1 ==>44
=====i am:我是1 ==>45
=====i am:我是1 ==>46
=====i am:我是1 ==>47
=====i am:我是1 ==>48
=====i am:我是1 ==>49
=====i am:我是1 ==>50
=====i am:我是1 ==>51
=====i am:我是1 ==>52
=====i am:我是1 ==>53
=====i am:我是1 ==>54
=====i am:我是1 ==>55
=====i am:我是1 ==>56
=====i am:我是1 ==>57
=====i am:我是1 ==>58
=====i am:我是1 ==>59
=====i am:我是1 ==>60
=====i am:我是1 ==>61
=====i am:我是1 ==>62
=====i am:我是1 ==>63
=====i am:我是1 ==>64
=====i am:我是1 ==>65
=====i am:我是1 ==>66
=====i am:我是1 ==>67
=====i am:我是1 ==>68
=====i am:我是1 ==>69
=====i am:我是1 ==>70
=====i am:我是1 ==>71
=====i am:我是1 ==>72
=====i am:我是1 ==>73
=====i am:我是1 ==>74
====
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

了悟生死大事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值