![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发基础
超人kk
这个作者很懒,什么都没留下…
展开
-
基于Servlet 3实现请求隔离
基于Servlet 3实现请求隔离1、理解为什么实现请求异步化?在使用一种技术的时候,我们一定要会评估过为什么要这样使用它。首先我们先来了解下Tomcat的请求流程,Tomcat在收到HTTP请求后会按照如下流程出来请求。1、容器负责接收并解析请求为HttpServletRequest。2、然后交给Servlet进行业务处理。3、最后通过HttpServletResponse写出响应。在Servlet2.x规范中,所有的请求都是同步处理的,也就是说必须在同一个线程中完成从接收请求、业务处理和生原创 2020-09-23 11:46:00 · 572 阅读 · 0 评论 -
7、并发编程基础-Concurrent.util常用类
目录CyclicBarrier的使用1、CyclicBarrier的使用场景还原:每个线程线程代表一个跑步运动员,当运动员都准备好后,才一起除非,只要有一个人没有准备好,大家都等待。这个种情况如何使代码实现呢?这种情况就需要用到CyclicBarrier了,它可以把程序阻塞在一个地方进行等待,指定需要执行的任务达到CyclicBarrier设置的值,此时CyclicBarrie...原创 2018-07-07 22:19:01 · 708 阅读 · 0 评论 -
6、并发编程基础-深入理解Excecutors执行器和线程池
1、认识Excecutors执行器Executor框架是指java 1.5中引入的一系列并发核心包,在在java.util.concurrent包中。其中并发包,Executor,Executors,ExecutorService,CompletionService,Future,Callable等,他们的关系为其中在并发包中有一个比较重要的类:Executors,他扮演线程工厂的角色...原创 2018-07-07 18:59:33 · 602 阅读 · 0 评论 -
5、并发编程基础-多线程设计模式
并行设计模式属于设计优化的一部分,它是对一些常用的多线程结果的总结和抽象。与串行程序相比,并行程序的结构通常更为复杂。因此合理的使用并行模式在多线程开发中更具有意义,在这里主要介绍Future、Master-Worker和生产者-消费者模型。1、Future设计模式(异步操作原理)Future模式有点类似于商品订单。比如在网够时,当我们看到某一件商品时,就可以提交订单,当订单处理完成后,在...原创 2018-07-07 15:48:10 · 386 阅读 · 0 评论 -
4、并发编程基础-同步类容器和并发类容器
1、同步类容器同步类容器都是线程安全的,但是在某些场景下可能需要加锁来保护复合操作。复合操作如:迭代(反复访问元素,变量容器中所有的元素)、跳转(根据指定的顺序找到当前元素的下一个元素)、以及条件运算。这些复合操作在多线程并发地修改容器时,可能会表现出意外的行为,最经典的便是ConcurrentModificationException,原因就是当容器迭代的过程中,被并发的修改了内容,这是由于...原创 2018-07-07 01:38:45 · 311 阅读 · 0 评论 -
3、并发编程基础-ThreadLocal 和 单例多线程
1、TheadLocalThreadLocal概念:线程局部变量,是一种多线程间并发访问变量的解决方案。与其synchronized等加锁的方法不同,ThreadLocal完全不提供加锁,而使用空间换时间的手段,为每个线程提供变量的独立副本,以保证线程安全。 从性能上说,ThreadLocal不惧有绝对的优势,在并发很高的时候,加锁的性能会更好,但作为一套与锁完成无关的线程安全解决方案...原创 2018-07-07 00:58:26 · 229 阅读 · 0 评论 -
2、并发编程基础-线程之间通信和实现简单Queue
1、线程之间的通信线程通信概念:线程是操作系统中独立的个体,但这些个体如果不是经过特殊的处理就不能成功一个整体,线程间的通信就是成为整体的必用方式之一。当线程存在通信指挥,系统间的交互就会更强大,在提高cpu利用率的同时还会使开发人员对线程任务在处理的过程中进行有效的把控与监督。使用 wait / notify 方法实现线程间的通信。(注意这两个方法都是object的类的方法,所以java...原创 2018-07-07 00:29:42 · 212 阅读 · 0 评论 -
9、并发编程基础-高性能的生产者-消费者框架(Disruptor)
目录1. 为什么要不选择BlockigQueue做生产者消费者缓存队列。 2. Disruptor的优势 3. 认识RingBuffer 4. 术语说明 5. 开发示例 6. 提高消费者的响应时间1、为什么要不选择BlockigQueue做生产者消费者缓存队列。BlockigQueue用于实现生产者和消费者是一个很不错的选择。它可以很方便的实现生产者和消费者之间...原创 2018-07-12 00:25:04 · 2100 阅读 · 3 评论 -
8、并发基础-concurrent.locks锁机制
目录:1. ReentrantLock(重入锁) 2. 重入锁,使用Condition类,实现锁于等待/通知 3. ReentrantReadWriteLock(读写锁)在java多线程种,我们知道可以使用synchronized关键字来实现线程间的同步互斥工作,那么其实还有一个更优秀的机制完成这个“同步互斥”工作,他就是Lock对象,它主要有两种锁,重入锁和读写锁。她们具有比sy...原创 2018-07-08 16:15:16 · 402 阅读 · 0 评论 -
1、并发编程基础-基础知识点
1、线程安全线程安全概念:当多个线程访问某一个类(对象或者方法)时,这个类始终都能够表现出正确的行为,那么这个类(对象或者方法)就是线程安全。synchronized:可以在任意对象及方法上加锁,而加锁的这段代码称为“互斥区”或者“临界区”当多个线程访问myThread的run方法时,以排队的方式进行处理(这里排队是按照cpu分配的先后顺序而定),一个线程想 要执行syncheoni...原创 2018-06-22 22:23:35 · 194 阅读 · 0 评论