缓存类:

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 classTestCache1 {

@PostConstructpublic voidmethod1() {new Thread(newRunnable() {

@Overridepublic voidrun() {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 classTestCache2 {

@PostConstructpublic voidmethod2() {new Thread(newRunnable() {

@Overridepublic voidrun() {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 实现缓存,一个线程存,一个线程取相关推荐

  1. java 全局缓存_java本地缓存

    1.为什么要使用缓存 由于服务器.数据库.网络等资源有限,无法支撑越来越多的请求与计算量,所以将一部分数据放在缓存中,以此减小薄弱环节的计算量和请求流程. 网站中缓存的应用场景:1:可以缓存整个页面的 ...

  2. java服务器缓存_Java服务器缓存溢出有哪些呢、?

    在C程序中,缓存溢出是最常见的安全隐患.缓存溢出在用户输入超过已分配内存空间(专供用户输入使用)时出现.缓存溢出可能成为导致应用被覆盖的关键因素.C程序很容易出现缓存溢出,但Java程序几乎不可能出现 ...

  3. java 获取线程某个_Java中如何唤醒“指定的“某个线程

    熟悉线程操作的小朋友应该知道,Java中线程的挂起和唤醒一般用synchronized + wait + notify完成. 比如: synchronized(o) { o.wait(); //wai ...

  4. java线程死亡_java – 如何暂停main()直到所有其他线程死亡?

    在我的程序中,我在main()方法中创建了几个线程. main方法的最后一行是调用System.out.println(),在所有的线程都死了之前我不想调用它.我已经尝试在每个线程上调用Thread. ...

  5. java除余_Java中的相除(/)和取余(%)的实现方法

    取模运算与取余运算两个概念有重叠的部分但又不完全一致.主要的区别在于对负整数进行除法运算时操作不同. 对于整形数a,b来说,取模运算或者求余运算的方法都是: 1.求 整数商 c = a / b: 2. ...

  6. java常用的缓存_java 常用缓存 - 只对肉有感觉的个人空间 - OSCHINA - 中文开源技术交流社区...

    缓存是日常开发的粗茶淡饭,如果应用对某类数据有着较高的读取频次,并且改动较小时那就非常适合利用缓存来提高性能 JVM 缓存 使用全局变量,如 Map.List等容器用于存放数据,可以认为是堆缓存 eh ...

  7. java 线程崩溃_java语言中application异常退出和线程异常崩溃的捕获方法,并且在捕获的钩子方法中进行异常处理...

    1.application应用程序注入自定义钩子程序 java语言本身提供一个很好的Runtime类,可以使我们很好的获取运行时信息.其中有一个方法是 public void addShutdownH ...

  8. java juc作者_Java面试之JUC系列:Collection线程不安全的举例

    Collection线程不安全的举例 前言 1.当我们执行下面语句的时候,底层进行了什么操作 new ArrayList(); 底层创建了一个空的数组,伴随着初始值为10 当执行add方法后,如果超过 ...

  9. java 线程起名字_java多线程学习三::::为什么要给线程起名字并且知道守护作用?...

    为什么要会线程起名字呢? 你如果拿到一连串的Thread-01,Thead-02我想你应该会疯掉,看以下代码 package rs.thread.day0504; /** * @auther rs * ...

最新文章

  1. [Luogu P2014]选课 (树形DP)
  2. ad域帐号登录提示无法处理请求_微软Windows Server之AD域控制器迁移测试方案
  3. 记一次SQL Server2005导入Oracle10G的折腾过程【供多种数据库导入导出数据的C#程序源码参考】...
  4. 云服务器 ECS CentOS 7配置默认防火墙 Firewall
  5. python中时间处理_Python中处理时间的几种方法小结
  6. Thinking in C++遇到的函数指针及应用
  7. 小红书回应赴港IPO:暂无明确计划
  8. h3c 链路聚合测试_4G/5G聚合路由器在直播中无线多链路聚合图传技术是什么?
  9. c+命名空间_了解C ++中的命名空间
  10. 大前端技术选型 Native原生iOS, Android, React-Native, Flutter, 微信小程序, HTML5
  11. 【图像去噪】基于matlab自适应布谷鸟算法优化维纳滤波器图像去噪【含Matlab源码 1892期】
  12. dis的前缀单词有哪些_前缀dis-dis和un和im前缀-un和dis前缀的区别
  13. 【独行秀才】macOS Monterey 12.3.1正式版(21E258)
  14. Ubuntu安装搜狗输入法后修改默认英文输入状态的方法
  15. 基于互联网的温度采集系统
  16. oracle能用hql吗,使用HQL查询日期,Oracle报“Invalid number”
  17. Android自定义控件(一) 可滑动的进度条
  18. shell向文件末尾添加内容
  19. 目标检测学习————Keras搭建yolo3目标检测平台
  20. 强化学习4——基于Actor-Critic的自适应PID控制器设计

热门文章

  1. 未来属于SVO? - KlayGE游戏引擎
  2. 西山居Donya达成战略合作 Simplygon技术优化《剑网3》
  3. shell与export命令
  4. Spark(Shuffle)
  5. FJ集团企业级邮件服务器——Exchange服务器安装与配置(边缘传输服务器)
  6. 百度安全DDoS攻击年度报告出炉 企业防护有新招!
  7. Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  8. PostgreSQL备份之omniPITR
  9. Memcache学习笔记
  10. IOS 学习笔记 2015-03-27 我理解的OC-代理模式