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