java guardedby_java并发编程之Guarded Suspention
当客户端请求速度远远大于服务端的处理速度,这时候就非常适合使用Guarded Suspention模式package cn.fcl.guardendSuspension;
import java.util.ArrayList;
import java.util.List;
public class RequestQueue {
private List integers = new ArrayList();
public synchronized Integer get() {
if(integers.size() == 0) {
try {
wait();
} catch (InterruptedException e) {
}
}
return integers.remove(0);
}
public synchronized void add(Integer i) {
integers.add(i);
notify();
}
}
package cn.fcl.guardendSuspension;
public class Client extends Thread {
private RequestQueue queue;
public Client(RequestQueue queue) {
super();
this.queue = queue;
}
public void run() {
for(int i = 0; i < 10; i++) {
queue.add(i);
}
System.out.println("请求完毕");
}
}
package cn.fcl.guardendSuspension;
public class Server extends Thread{
private RequestQueue queue;
public Server(RequestQueue queue) {
this.queue = queue;
}
@Override
public void run() {
while(true) {
Integer i = queue.get();
System.out.println(i + "已经处理");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
package cn.fcl.guardendSuspension;
public class main {
public static void main(String[] args) {
RequestQueue queue = new RequestQueue();
new Client(queue).start();
new Server(queue).start();
}
}
原文:http://fangchunliu.blog.51cto.com/1269779/1411302
java guardedby_java并发编程之Guarded Suspention相关推荐
- 【java 高并发编程之JUC】2w字带你JUC从入门到精通
点击查看脑图目录地址,实时更新 1 什么是 JUC 1.1 JUC 简介 在 Java 中,线程部分是一个重点,本篇文章说的 JUC 也是关于线程的.JUC 就是 java.util .concurr ...
- 【java 高并发编程之JUC】高阶JUC特性总结
1 线程中断机制 1.1 什么是中断? 首先 一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止.所以,Thread.stop, Thread.suspend, Thread.res ...
- java线程安全的set_Java并发编程之set集合的线程安全类你知道吗
Java并发编程之-set集合的线程安全类 Java中set集合怎么保证线程安全,这种方式你知道吗? 在Java中set集合是 本篇是<凯哥(凯哥并发编程学习>系列之<并发集合系列& ...
- zbb20180929 thread java并发编程之Condition
java并发编程之Condition 引言 在java中,对于任意一个java对象,它都拥有一组定义在java.lang.Object上监视器方法,包括wait(),wait(long timeout ...
- java并发编程之4——Java锁分解锁分段技术
转载自 java并发编程之4--Java锁分解锁分段技术 并发编程的所有问题,最后都转换成了,"有状态bean"的状态的同步与互斥修改问题.而最后提出的解决"有状态bea ...
- java 时间戳_Java并发编程之CAS三CAS的缺点 及解决办法
Java并发编程之CAS第三篇-CAS的缺点 通过前两篇的文章介绍,我们知道了CAS是什么以及查看源码了解CAS原理.那么在多线程并发环境中,的缺点是什么呢?这篇文章我们就来讨论讨论 本篇是<凯 ...
- Java 并发编程之美:并发编程高级篇之一-chat
借用 Java 并发编程实践中的话:编写正确的程序并不容易,而编写正常的并发程序就更难了.相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作 ...
- Java 并发编程之美:并发编程高级篇之一
借用 Java 并发编程实践中的话:编写正确的程序并不容易,而编写正常的并发程序就更难了.相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作 ...
- Java并发编程之CAS第三篇-CAS的缺点
Java并发编程之CAS第三篇-CAS的缺点 通过前两篇的文章介绍,我们知道了CAS是什么以及查看源码了解CAS原理.那么在多线程并发环境中,的缺点是什么呢?这篇文章我们就来讨论讨论 本篇是<凯 ...
- Java并发编程之CyclicBarrier详解
简介 栅栏类似于闭锁,它能阻塞一组线程直到某个事件的发生.栅栏与闭锁的关键区别在于,所有的线程必须同时到达栅栏位置,才能继续执行.闭锁用于等待事件,而栅栏用于等待其他线程. CyclicBarrier ...
最新文章
- AR+ 实时音视频通话,×××无缝结合
- 用 Go 构建一个区块链 ---- Part 1: 基本原型
- python opencv 录制视频_OpenCV Python 录制视频
- 学习C语言必须知道的理论知识(第三章-C语句)
- [改善Java代码]使用静态内部类提高封装性
- 如何防止SWF文件被反编译 如何防止SWF文件被反编译(2)
- 关于电的计算机公式,关于各类电量的计算公式
- 《怎样解题》思维导图
- 计算机二本院校排名民办河北,2020年河北民办二本大学及分数线-河北最好的民办大学学费...
- java.lang.IllegalStateException: Could not find method onClick(View) in a parent or ancestor Context
- android 全局剪贴板,Android剪贴板详解
- 使用NoteExpress/Citespace/VOSviewer/EndNote进行CNKI文献计量分析
- TypeScript基础入门之Symbols
- (2)勾股数组与单位圆
- 示波器如何设置实现单次触发
- petya病毒分析_首先是WannaCry,现在是Petya –防范大规模勒索软件攻击
- d2l.Vocab(sentences, min_freq=5, reserved_tokens=[‘<pad>‘, ‘<mask>‘, ‘<cls>‘, ‘<sep>‘]) 参数讲解
- word文档保存的时候,就会出现“文件许可权错误,word 无法完成保存文件”的提示
- 不错的google搜索地址
- OpenCV实战(12)——图像滤波详解
热门文章
- 2020 年 Python 知识清单(数据分析)
- 黑马程序员SpringBoot基础篇SSMP整合案例
- python中的modify是什么意思_理解Python中的装饰器
- 当我们在谈论瑞幸咖啡的时候,我们谈论什么?
- P5960 【模板】差分约束算法
- 玩转软路由 篇一:巨详细的修改Esxi7.0管理端口教程
- Could not set property ‘XXX‘ of ‘class com.entity.XXX‘
- 9月25日百度大脑开放日人像特效专场火热报名中!
- 自然语言处理(NLP)知识结构总结
- 如何看待2022年秋招后开端岗一片红海?