![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
justin_ya
这个作者很懒,什么都没留下…
展开
-
并发编程---进阶篇
常用的并发工具类CountDownLatch作用:是一组线程等待其他的线程完成工作以后在执行,加强版joinawait用来等待,countDown负责计数器的减一CyclicBarrier让一组线程达到某个屏障,被阻塞,一直到组内最后一个线程达到屏障时,屏障开放,所有被阻塞的线程会继续运行CyclicBarrier(int parties)CyclicBarrier(int parti...原创 2019-04-29 13:02:45 · 181 阅读 · 0 评论 -
并发容器ConcurrentHashMap底层实现及源码解析
并发容器ConcurrentHashMapHashmap多线程会导致HashMap的Entry链表形成环形数据结构,一旦形成环形数据结构,Entry的next节点永远不为空,就会产生死循环获取Entry。HashTable使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效率非常低下。因为当一个线程访问HashTable的同步方法,其他线程也访问Hash...原创 2019-04-29 13:06:57 · 494 阅读 · 0 评论 -
并发容器ConcurrentSkipListMap和ConcurrentSkipListSet及写时复制理解
更多的并发容器ConcurrentSkipListMap 和 ConcurrentSkipListSetTreeMap和TreeSet有序的容器,这两种容器的并发版本跳表SkipList,以空间换时间,在原链表的基础上形成多层索引,但是某个节点在插入时,是否成为索引,随机决定,所以跳表又称为概率数据结构。ConcurrentLinkedQueue无界非阻塞队列,底层是个链表,遵循先进...原创 2019-04-29 13:10:01 · 204 阅读 · 0 评论 -
阻塞队列
概念、生产者消费者模式1)当队列满的时候,插入元素的线程被阻塞,直达队列不满。2)队列为空的时候,获取元素的线程被阻塞,直到队列不空。生产者和消费者模式生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。同样的道理,如果消费者的处理能力大于生产者,那么消费者就必须等待生产者。为...原创 2019-04-29 13:14:00 · 116 阅读 · 0 评论 -
线程池
什么是线程池?为什么要用线程池?1、降低资源的消耗。降低线程创建和销毁的资源消耗;2、提高响应速度:线程的创建时间为T1,执行时间T2,销毁时间T3,免去T1和T3的时间3、提高线程的可管理性。实现一个我们自己的线程池1、线程必须在池子已经创建好了,并且可以保持住,要有容器保存多个线程;2、线程还要能够接受外部的任务,运行这个任务。容器保持这个来不及运行的任务.JDK中的线程池和工作...原创 2019-04-29 13:16:01 · 125 阅读 · 0 评论 -
并发编程---基础篇
进程和线程进程:程序运行资源分配的最小单位,进程内部有多个线程,会共享这个进程的资源。线程:CPU调度的最小单位,必须依赖进程而存在。并行和并发并行:同一时刻,可以同时处理事情的能力并发:与单位时间相关,在单位时间内可以处理事情的能力高并发编程的意义、好处和注意事项好处:充分利用cpu的资源、加快用户响应的时间,程序模块化,异步化问题:线程共享资源,存在冲突;容易导致死锁;启...原创 2019-04-29 12:56:29 · 118 阅读 · 0 评论