Java 实现缓存,一个线程存,一个线程取
2018-10-11 19:55
309 查看
缓存类:
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 = 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; @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(200); } catch (InterruptedException e) { e.printStackTrace(); } continue; } String str = Cache.INSTANCE.take(); System.out.println(str); } } },"ThreadTake").start(); } }
启动Web工程,可见效果
奇怪的是,如果不在Web工程里,只是运行Java类,没有效果
相关文章推荐
- java中二种方法实现一个线程
- Java 有几程方法可以实现一个线程?用什么关键字修饰同步?stop()和suspend()为什么不推荐使用?
- java java local cache本地缓存的两种实现,一个基于list轮询一个基于timer定时
- Java多线程-一个简单的线程,实现挂起和恢复的功能
- Java核心知识点学习----线程中如何创建锁和使用锁 Lock,设计一个缓存系统
- java基础问题---java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用
- java中有几种方法可以实现一个线程?用什么关键字修饰同步
- Java多线程之~~~使用CountDownLatch来同步多个线程实现一个任务
- java中有几种方法可以实现一个线程
- Java中有几种方法可以实现一个线程
- 用java5读写技术实现一个伪缓存技术
- Java多线程-一个简单的线程,实现挂起和恢复的功能
- 一个轻量级java缓存的实现
- java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用
- java一个实现实例缓存的不可变类
- 分享一个java Map实现的cache manager,定时清除缓存起来的值
- JAVA线程之一:实现一个线程的两种方法
- java如何实现启动一个线程
- Java中有几种方法实现一个线程,用什么关键字修饰同步方法?stop()和suspend()方法为何不提倡使用?
- Java多线程-一个简单的线程,实现挂起和恢复的功能