![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
txd2016_5_11
规格严格,功夫到家
展开
-
并发编程:安全问题
最近开始学习并发编程,每天抽空学一点,晚上坚持做一下笔记。180918-------------------------------------------------------------------------------------------------------------------------一、什么是线程安全 多个线程同时访问一个类(对象或方法)时,这...原创 2018-09-18 21:35:30 · 258 阅读 · 0 评论 -
并发编程:Executor(一、创建线程池)
Executors:位于jav.util.concurrent包下,是Executor框架的线程工厂,通过Executors可以创建特定功能的线程池。其所创建的线程池主要有四类:newCachedThreadPool、newFixedThreadPool、newScheduledThreadPool、newSingleThreadExecutor。 newCach...原创 2018-10-28 20:41:55 · 130 阅读 · 0 评论 -
并发编程:生产者-消费者模式
除了Futrue模式和Master-Worker模式,生产者-消费者模式也是一个非常经典的多线程模式。在生产者-消费者模式中,通常有两类线程(即N+1个生产者和N+1个消费者的线程),生产者负责提交用户请求,消费者则负责进行具体的业务处理,生产者和消费者之间通过共享内存缓存区(MQ)进行通信。下面以一段小例子进行模拟: Data:数据类,模拟生产者和消费者所操作的...原创 2018-10-27 19:54:28 · 156 阅读 · 0 评论 -
并发编程:Master-Worker模式
Master-Worker模式是常用的并行计算模式,其核心思想是系统由两类进程协作工作:Master和Worker进程。Master负责接收和分配任务,Worker负责处理子任务。当Worker完成子任务后会将结果返回给Master,Master则对Worker们的返回结果做归纳和总结,其好处是将一个大任务分解成若干个小任务,并发执行从而提高系统的吞吐量。从某种角度来讲,其思想跟“...原创 2018-10-27 16:58:37 · 259 阅读 · 0 评论 -
并发编程:Futrue模式
Futrue模式,类似于Ajax请求,都是异步操作,由线程A发出请求,立即获取一个代理对象,然后线程A继续执行它自己接下来的操作,而获取的代理对象则再去加载真正的数据,当线程A需要该数据时再通过这个代理对象获取,下面给出一段小例子来进行说明。 FutrueTest类,作为主函数,使线程A发出获取Data的请求并得到返回结果:data(真实数据的代理对象),在得到d...原创 2018-10-25 22:21:06 · 136 阅读 · 0 评论 -
并发编程:延迟队列
延迟队列:DelayQueue。在前边并发类容器中已经对延迟队列进行了学习,下面以一段小例子来加深对此队列的印象。本次举例使用Class:网吧、Class:小屁孩儿 这两个类来模拟“网吧上网”这样一个场景,下面给出网吧这个类的代码:public class 网吧 implements Runnable{ private DelayQueue<小屁孩儿> queue = ne...原创 2018-10-24 22:48:21 · 237 阅读 · 0 评论 -
并发编程:优先级阻塞队列
优先级阻塞队列:PriorityBlockingQueue。先上一段小例子: public static void main(String[] args) throws InterruptedException { PriorityBlockingQueue<Task> queue = new PriorityBlockingQueue<Task>(); ...原创 2018-10-23 22:53:11 · 363 阅读 · 0 评论 -
并发编程:并发类容器
前面学到了JDK1.5版本以前的同步类容器及Collections.synchronizedXXX等方法,现在来学习JDK1.5版本以后对应并发编程的容器--并发类容器。 并发类容器是专门针对并发而设计的,它们在保障线程安全的同时,也尽可能的保证了并发性。在并发编程中,传统的HashTable被ConcurrentHashMap替代、Vector被CopyOnWr...原创 2018-10-20 22:35:54 · 134 阅读 · 0 评论 -
并发编程:同步类容器
同步类容器:一种容器,一种注重同步的容器,如Vector,HashTable等容器。同步类容器都是线程安全的,某些情况下还需要加锁来保护复合操作(复合操作,如迭代、跳转、条件运算等),因为这些复合操作在多线程并发地修改容器时,可能会表现出意外的行为(比如经典的ConcurrentModificationException异常)。 传统的同步类容器,其同步功能基本都...原创 2018-10-19 22:13:03 · 108 阅读 · 0 评论 -
并发编程:ThreadLocal与单例模型
ThreadLocal:线程局部变量,是一种多线程之间并发访问变量的解决方案。与synchronized等加锁的方式不同,ThreadLocal完全不提供锁,其采用以空间换时间的思想,为每个线程的变量提供独立副本以保障线程安全。在并发不是很高的业务场景下,加锁较之会性能更好,但ThreadLocal作为一套与锁完全无关的线程安全解决方案,在高并发量或者竞争激烈的场景下,其可以在一定程度上减少锁竞争...原创 2018-10-16 22:21:39 · 501 阅读 · 0 评论 -
并发编程:线程通信
线程通信概念: 线程是操作系统中独立的个体,将多个线程(即将多个操作系统中这样的独立个体)整合成一个整体,这就需要线程之间的通信。当线程之间存在通信指挥,系统间地交互性会更加强大,在提高系统利用率的同时还会使开发人员对线程任务在处理过程中进行有效的把控和监督。wait/notify: 使用wait/notify方法实现线程间的通信需要注意:① 这两个方法都是...原创 2018-10-11 22:07:09 · 108 阅读 · 0 评论 -
并发编程:volatile关键字
180921 -------------------------------------volatile关键字------------------------------------------------volatile关键字:主要作用是使变量在多个线程间可见; java中,没一个线程都会有一块工作内存区,其中存放着所有线程共享的主内存中变量值的拷贝。当线程执行时,线程在...原创 2018-09-21 23:33:55 · 119 阅读 · 0 评论 -
并发编程:Executors(二、自定义线程池)
前面介绍到,Executor的线程池工厂通过ThreadPoolExecutor来构建带有特定功能的线程池,同样,也可以使用ThreadPoolExecutor来构建自定义线程池。 通过ThreadPoolExecutor构建自定义线程池比较关键的是其构造函数中所传入的队列类型。 使用有界队列时:若有新的任务需要执行时,如果线程池实际线程数小于c...原创 2018-10-31 00:22:59 · 236 阅读 · 0 评论