Java 实现缓存,一个线程存,一个线程取
缓存类:
package com.zit.test; import java.util.concurrent.BlockingDeque;
import java.util.concurrent.LinkedBlockingDeque; public enum Cache { INSTANCE; public BlockingDeque<String> list = new LinkedBlockingDeque<String>(); 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; @Component
public class TestCache1 { @PostConstruct
public void method1() { new Thread(new Runnable() {
@Override
public void run() {
int i = ;
while(true) { Cache.INSTANCE.put("g" + i);
i++;
try {
Thread.sleep();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} },"ThreadPut").start();
} }
线程2:取数据
package com.zit.test; import javax.annotation.PostConstruct; import org.springframework.stereotype.Component; @Component
public class TestCache2 { @PostConstruct
public void method2() { new Thread(new Runnable() {
@Override
public void run() {
while(true) {
if(Cache.INSTANCE.isEmpty()) {
try {
Thread.sleep();
} catch (InterruptedException e) {
e.printStackTrace();
}
continue;
} String str = Cache.INSTANCE.take();
System.out.println(str);
}
} },"ThreadTake").start(); } }
启动Web工程,可见效果
奇怪的是,如果不在Web工程里,只是运行Java类,没有效果
Java 实现缓存,一个线程存,一个线程取的更多相关文章
- Java分布式缓存框架
http://developer.51cto.com/art/201411/457423.htm 在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓 ...
- 5个强大的Java分布式缓存框架
在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的缓存策略,那么到时候重构起来将会是一个噩梦.本文主要是分享了5 ...
- java 使用线程做一个简单的ATM存取款实例.(转)
线程 Thread 类,和 Runable 接口 比较两者的特点和应用领域. 可以,直接继承线程Thread类.该方法编写简单,可以直接操作线程,适用于单重继承情况,因而不能在继承其他类 实现Runn ...
- Java线程状态、线程start方法源码、多线程、Java线程池、如何停止一个线程
下面将依次介绍: 1. 线程状态.Java线程状态和线程池状态 2. start方法源码 3. 什么是线程池? 4. 线程池的工作原理和使用线程池的好处 5. ThreadPoolExecutor中的 ...
- 二 Java利用等待/通知机制实现一个线程池
接着上一篇博客的 一Java线程的等待/通知模型 ,没有看过的建议先看一下.下面我们用等待通知机制来实现一个线程池 线程的任务就以打印一行文本来模拟耗时的任务.主要代码如下: 1 定义一个任务的接口 ...
- Java再学习——停止一个正在运行的线程
关于这个问题,先了解一下Thread类方法中被废弃的那些方法.suspend(), resume(),stop()/stop(Throwable obj),destroy() 首先,stop(Thro ...
- java面试题:已知一个数组[2,4,6,2,1,5],将该数组进行排序(降序,不能用工具类进行排序),创建两条线程交替输出排序后的数组,线程名自定义
package com.swift; import java.util.Arrays; import java.util.Comparator; public class ArrayThread_Te ...
- java的服务是每收到一个请求就新开一个线程来处理吗?tomcat呢?
首先,服务器的实现不止有这两种方式. 先谈谈题主说的这两种服务器模型: 1.收到一个请求就处理,这个时候就不能处理新的请求,这种为阻塞 这个是单线程模型,无法并发,一个请求没处理完服务器就会阻塞,不会 ...
- 【Java面试】如何中断一个正在运行的线程?
一个去京东面试的工作了5年的粉丝来找我说: Mic老师,你说并发编程很重要,果然我今天又挂在一道并发编程的面试题上了. 我问他问题是什么,他说:"如何中断一个正在运行中的线程?". ...
- 闲来无事,用Java的软引用写了一个山寨的缓存
闲来无事,用Java的软引用写了一个山寨的缓存 博客分类: java基础 众所周知java中的引用分为 StrongReference.SoftReference.WeakReference.Phan ...
随机推荐
- 关于Mysql数据库的学习总结
关于Mysql操作指令: 1.键盘win + R 弹出windows运行输入框,输入cmd命令,进入windows数据库; 2.在windows数据库里输入mysql(数据库) -uroot(用户 ...
- windows程序设计 新建一个提示框程序
1.鼠标右键项目名称,添加->新建项目. 2.选择.cpp,将文件名改成.c文件.点击添加. 3.在.c文件里面输入代码. #include <windows.h> //hInsta ...
- javascript:void(0) 和 href="#"的区别
<a href="javascript:void(0);">点击 <a href="#">点击 如果使用下面一种方式,会跳到网页顶部. ...
- 在Qt Quick中一个简单Hello World加载过程
Qt5基本类图: QQmlEngine QQmlEngine类提供了一个QML引擎,用于管理由QML文档定义的对象层次架构,QML提供了一个默认的QML上下文(根上下文,获取函数QQmlEngi ...
- Poj3624 Charm Bracelet (01背包)
题目链接:http://poj.org/problem?id=3624 Description Bessie has gone to the mall's jewelry store and spie ...
- 浮点数(double、float)的格式化问题及处理
---恢复内容开始--- 平时常会面临浮点数的格式处理问题,下面就举例说一说常见的问题及处理: 1,科学计数法问题 一个浮点数123456789.10,在打印的时候变成了1.234567891E8,处 ...
- Python socket网络编程(通信介绍)
socket通信介绍 通信介绍(一) 1.所有网络协议的基础就是:socket 2.socket对TCP与UDP协议封装,让用户进行简单操作. 3.socket只做两件事:发 send,收 rec ...
- 使用docker部署ambari的若干要点
ambari部署各个组件 使用ambari进行部署时主要需要的组件包括: ambari-server: 主要部署的控制节点,负责控制agent进行部署. mysql: server存储的数据库.也支持 ...
- Bugku-CTF之看看源代码吧
Day13 看看源代码吧 http://123.206.87.240:8002/web4/ 本题要点:url解码 首先看到文本框,我们还是要习惯性输入一下
- 浅析Tomcat、JBOSS、WebSphere、WebLogic、Apache
做任何web项目,都离不开服务器,有钱的公司用WebSphere.WebLogic,没钱公司用nginx+tomcat,不要小瞧nginx+tomcat麻雀虽小,五脏俱全. 服务器的知识,在笔试.面试 ...