当客户端请求速度远远大于服务端的处理速度,这时候就非常适合使用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相关推荐

  1. 【java 高并发编程之JUC】2w字带你JUC从入门到精通

    点击查看脑图目录地址,实时更新 1 什么是 JUC 1.1 JUC 简介 在 Java 中,线程部分是一个重点,本篇文章说的 JUC 也是关于线程的.JUC 就是 java.util .concurr ...

  2. 【java 高并发编程之JUC】高阶JUC特性总结

    1 线程中断机制 1.1 什么是中断? 首先 一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止.所以,Thread.stop, Thread.suspend, Thread.res ...

  3. java线程安全的set_Java并发编程之set集合的线程安全类你知道吗

    Java并发编程之-set集合的线程安全类 Java中set集合怎么保证线程安全,这种方式你知道吗? 在Java中set集合是 本篇是<凯哥(凯哥并发编程学习>系列之<并发集合系列& ...

  4. zbb20180929 thread java并发编程之Condition

    java并发编程之Condition 引言 在java中,对于任意一个java对象,它都拥有一组定义在java.lang.Object上监视器方法,包括wait(),wait(long timeout ...

  5. java并发编程之4——Java锁分解锁分段技术

    转载自 java并发编程之4--Java锁分解锁分段技术 并发编程的所有问题,最后都转换成了,"有状态bean"的状态的同步与互斥修改问题.而最后提出的解决"有状态bea ...

  6. java 时间戳_Java并发编程之CAS三CAS的缺点 及解决办法

    Java并发编程之CAS第三篇-CAS的缺点 通过前两篇的文章介绍,我们知道了CAS是什么以及查看源码了解CAS原理.那么在多线程并发环境中,的缺点是什么呢?这篇文章我们就来讨论讨论 本篇是<凯 ...

  7. Java 并发编程之美:并发编程高级篇之一-chat

    借用 Java 并发编程实践中的话:编写正确的程序并不容易,而编写正常的并发程序就更难了.相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作 ...

  8. Java 并发编程之美:并发编程高级篇之一

    借用 Java 并发编程实践中的话:编写正确的程序并不容易,而编写正常的并发程序就更难了.相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作 ...

  9. Java并发编程之CAS第三篇-CAS的缺点

    Java并发编程之CAS第三篇-CAS的缺点 通过前两篇的文章介绍,我们知道了CAS是什么以及查看源码了解CAS原理.那么在多线程并发环境中,的缺点是什么呢?这篇文章我们就来讨论讨论 本篇是<凯 ...

  10. Java并发编程之CyclicBarrier详解

    简介 栅栏类似于闭锁,它能阻塞一组线程直到某个事件的发生.栅栏与闭锁的关键区别在于,所有的线程必须同时到达栅栏位置,才能继续执行.闭锁用于等待事件,而栅栏用于等待其他线程. CyclicBarrier ...

最新文章

  1. AR+ 实时音视频通话,×××无缝结合
  2. 用 Go 构建一个区块链 ---- Part 1: 基本原型
  3. python opencv 录制视频_OpenCV Python 录制视频
  4. 学习C语言必须知道的理论知识(第三章-C语句)
  5. [改善Java代码]使用静态内部类提高封装性
  6. 如何防止SWF文件被反编译 如何防止SWF文件被反编译(2)
  7. 关于电的计算机公式,关于各类电量的计算公式
  8. 《怎样解题》思维导图
  9. 计算机二本院校排名民办河北,2020年河北民办二本大学及分数线-河北最好的民办大学学费...
  10. java.lang.IllegalStateException: Could not find method onClick(View) in a parent or ancestor Context
  11. android 全局剪贴板,Android剪贴板详解
  12. 使用NoteExpress/Citespace/VOSviewer/EndNote进行CNKI文献计量分析
  13. TypeScript基础入门之Symbols
  14. (2)勾股数组与单位圆
  15. 示波器如何设置实现单次触发
  16. petya病毒分析_首先是WannaCry,现在是Petya –防范大规模勒索软件攻击
  17. d2l.Vocab(sentences, min_freq=5, reserved_tokens=[‘<pad>‘, ‘<mask>‘, ‘<cls>‘, ‘<sep>‘]) 参数讲解
  18. word文档保存的时候,就会出现“文件许可权错误,word 无法完成保存文件”的提示
  19. 不错的google搜索地址
  20. OpenCV实战(12)——图像滤波详解

热门文章

  1. 2020 年 Python 知识清单(数据分析)
  2. 黑马程序员SpringBoot基础篇SSMP整合案例
  3. python中的modify是什么意思_理解Python中的装饰器
  4. 当我们在谈论瑞幸咖啡的时候,我们谈论什么?
  5. P5960 【模板】差分约束算法
  6. 玩转软路由 篇一:巨详细的修改Esxi7.0管理端口教程
  7. Could not set property ‘XXX‘ of ‘class com.entity.XXX‘
  8. 9月25日百度大脑开放日人像特效专场火热报名中!
  9. 自然语言处理(NLP)知识结构总结
  10. 如何看待2022年秋招后开端岗一片红海?