![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
文章平均质量分 92
春水上行
这个作者很懒,什么都没留下…
展开
-
深入JAVA并发编程(十):线程池(三)
ScheduledThreadPoolExecutorScheduledThreadPoolExecutor是可对任务进行延迟/周期性调度的执行器(Executor),这类Executor一般实现了ScheduledExecutorService这个接口。ScheduledExecutorService在普通执行器接口(ExecutorService)的基础上引入了Future模式,使得可以限时...原创 2020-01-15 17:14:58 · 578 阅读 · 0 评论 -
深入JAVA并发编程(九):线程池(二)
ThreadPoolExecutor在上一篇中我们讲过通过Executors工厂,用户可以创建自己需要的线程池对象,并且好几个线程池底层都是使用了ThreadPoolExecutor实现,只是传入的参数不同ThreadPoolExecutor,它是J.U.C在JDK1.5时提供的一种实现了ExecutorService接口的执行器,或者说叫线程池。ThreadPoolExecutor并没有自己直...原创 2020-01-08 18:00:07 · 599 阅读 · 0 评论 -
深入JAVA并发编程(八):线程池(一)
线程池合理的使用线程池能够为我们带来如下好处降低资源消耗:如果我们每次执行异步任务都去new一个线程来运行,那么线程的创建和销毁的开销则是难于预估的,而使用线程池就可以直接对线程复用来降低资源消耗。提高线程的可管理性:使用线程池可以进行统一分配、调优和监控。JDK已经为我们提供好了一套Executor框架,帮助我们来有效地进行线程控制。首先我们来看一下类图,这些类和接口均在JUC包中...原创 2020-01-03 15:59:16 · 484 阅读 · 0 评论 -
深入JAVA并发编程(七):并发容器(三)
并发容器ConcurrentSkipListMap我们知道HashMap是一种键值对形式的数据存储容器,它内部的元素是无序的。但是JDK提供了TreeMap,TreeMap使用红黑树按照key的顺序(自然顺序、自定义顺序)来使得键值对有序存储,但是和HashMap同样是线程不安全的,因此在JAVA并发包中提供了ConcurrentSkipListMap容器,它能够保证在多线程环境下使键值对按照...原创 2019-12-19 14:20:29 · 334 阅读 · 0 评论 -
深入JAVA并发编程(六):并发容器(二)
并发容器ConcurrentLinkedQueueConcurrentLinkedQueue是线程安全的无界非阻塞队列,其底层数据结构使用单向链表实现,出队和入队操作使用CAS来实现线程安全。源码分析我们先来看一下链表的节点类 private static class Node<E> { //存储的数据 volatile E item; /...原创 2019-12-10 14:37:52 · 390 阅读 · 0 评论 -
深入JAVA并发编程(五):并发容器(一)
原子操作类我们知道,当多线程同时对一个变量进行更新操作时,可能会出现线程安全性问题,通常我们可以使用synchronized、Lock来进行同步操作解决这个问题,但是这样程序性能会有所影响。JAVA1.5之后,JUC包中提供了一系列的原子操作类,提供了一种用法简单、性能高效、线程安全地更新变量的方式。原子更新基本类型类使用原子的方式更新基本类型,Atomic包提供了以下三个类Atomic...原创 2019-11-22 17:02:28 · 430 阅读 · 0 评论 -
深入JAVA并发编程(四):原子操作类
JAVA中的锁CAS算法我们知道在使用锁的时候对性能会有影响,CAS(Compare And Swap 比较并交换)是一种有名的无锁算法,即不使用锁的情况下实现多线程之间的变量同步,也就是在没有线程被阻塞的情况下实现变量的同步,所以也叫非阻塞同步(Non-blocking Synchronization)。实现思想是这样的,CAS(V, A, B),V为需要读写内存地址的值、A为预期原值,B...原创 2019-11-06 17:21:03 · 300 阅读 · 0 评论 -
深入JAVA并发编程(三):JAVA中的锁
JAVA中的锁Lock接口锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源。在Lock接口出现之前,JAVA是靠synchronized关键字实现锁功能的,JDK5之后,并发包中新增了Lock接口及相关实现类用来实现锁功能,它提供了与synchronized关键字类似的同步功能,只是在使用时需要显式的获取和释放锁,它拥有了锁获取和释放的可操作性,可中断的...原创 2019-10-24 17:33:36 · 366 阅读 · 0 评论 -
深入JAVA并发编程(二):JAVA内存模型
多线程并发编程线程安全性问题共享资源是指该资源被多个线程持有或者说多个线程都可以去访问该资源。线程安全问题是指当多个线程同时读写一个共享资源时并且没有任何同步措施时,导致出现脏数据获取其他不可预见结果的问题。当多个线程只是读取共享资源而不去修改的时候,是不会出现线程安全问题的。只有当至少一个线程修改共享资源时才会存在线程安全问题。举个例子例如计数器。有一个共享变量count,在t1时刻时A...原创 2019-09-18 14:09:10 · 277 阅读 · 0 评论 -
深入JAVA并发编程(一):JAVA线程基础
并发编程持久化持久化可以提高RabbitMQ的可靠性,以防在异常情况(重启、宕机)下的数据丢失,RabbitMQ的持久化分为三个部分:交换器的持久化、队列的持久化和消息的持久化。交换器的持久化...原创 2019-08-30 14:42:35 · 513 阅读 · 0 评论