博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 实现缓存,一个线程存,一个线程取
阅读量:4549 次
发布时间:2019-06-08

本文共 2191 字,大约阅读时间需要 7 分钟。

 

 

缓存类:

 

package com.zit.test;import java.util.concurrent.BlockingDeque;import java.util.concurrent.LinkedBlockingDeque;public enum Cache {	INSTANCE;		public BlockingDeque
list = new LinkedBlockingDeque
(); public void put(String str) { try { list.put(str); } catch (InterruptedException e) { e.printStackTrace(); } } public String take(){ String str = null; try { str = list.take(); } catch (InterruptedException e) { e.printStackTrace(); } return str; } public boolean isEmpty(){ return list.isEmpty(); }}

  

线程1:存数据

 

package com.zit.test;import javax.annotation.PostConstruct;import org.springframework.stereotype.Component;@Componentpublic class TestCache1 {    @PostConstruct    public void method1() {                new Thread(new Runnable() {            @Override            public void run() {                int i = 0;                 while(true) {                    Cache.INSTANCE.put("g" + i);                    i++;                    try {                         Thread.sleep(1000);                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                }            }                    },"ThreadPut").start();    }}

 

 

 线程2:取数据

 

package com.zit.test;import javax.annotation.PostConstruct;import org.springframework.stereotype.Component;@Componentpublic class TestCache2 {    @PostConstruct    public void method2() {                new Thread(new Runnable() {            @Override            public void run() {                while(true) {                    if(Cache.INSTANCE.isEmpty()) {                        try {                            Thread.sleep(200);                        } catch (InterruptedException e) {                            e.printStackTrace();                        }                        continue;                    }                                        String str = Cache.INSTANCE.take();                    System.out.println(str);                }            }                    },"ThreadTake").start();                    }}

 

 

启动Web工程,可见效果

 

 

 

奇怪的是,如果不在Web工程里,只是运行Java类,没有效果

 

转载于:https://www.cnblogs.com/Donnnnnn/p/9774673.html

你可能感兴趣的文章
Maven in 5 Minutes(Windows)
查看>>
常用前端开发工具合集
查看>>
T-SQL:SQL Server-数据开发(经典)
查看>>
IOS 截取字符串
查看>>
键盘控制div移动并且解决停顿问题(原生js)
查看>>
矩阵快速幂优化线性递推
查看>>
基础网络流学习笔记
查看>>
Linux文件夹文件创建、删除
查看>>
归并排序 稳定
查看>>
xml约束技术之dtd
查看>>
项目Beta冲刺(团队3/7)
查看>>
云存储的那些事(1)——数据冗余
查看>>
android状态机机制StateMachine
查看>>
滚动条自适应宽度的问题
查看>>
第二次作业——个人项目实战
查看>>
HighCharts图表控件在ASP.NET WebForm中的使用
查看>>
C#汉字转拼音
查看>>
Remote Service 和 Local App的交互
查看>>
用python实现最长公共子序列算法(找到所有最长公共子串)
查看>>
正则表达式
查看>>