java多线程
文章平均质量分 52
有梦想的咸鱼xx
仅仅是分享的个人知识总结,希望也能帮助到陌生的你!
展开
-
ConcurrentHashMap核心方法个人理解 jdk1.8
1、putVal() 底层:Node数组+链表+红黑树 发生hash冲突的时候,在该下标尾部添加新结点成为链表,链表的长度超过8则转换为红黑树 1)判断key和value为null则抛出空指针异常 2)通过二次hash计算出key对应的node节点数组下标 3)如果数组未被初始化,调用初始化的函数 4)如果对应下标的节点为null,表示该下标的没有节点,直接添加(这里使用了ca原创 2017-11-06 22:15:09 · 250 阅读 · 0 评论 -
volatile和ThreadLocal的理解
1、ThreadLocal是用于解决多线程共享类的成员变量,原理:在每个线程中都存有一个本地ThreadMap,相当于存了一个对象的副本,key为threadlocal对象本身,value为需要存储的对象值,这样各个线程之间对于某个成员变量都有自己的副本,不会冲突。例如:SimpleDateFormat不是线程安全的类,作为成员变量的时候会面临线程安全问题,这个时候我们需要为每一个线程本地保存一个...原创 2017-11-06 11:34:52 · 6042 阅读 · 0 评论 -
使用blockingqueue实现的简单生产者消费者模型
1、生产者消费者模型一般用于将复杂的业务逻辑异步化,多个线程来同时处理以提升系统的运行效率,典型的案例就是消息队列。2、这里我使用的是blockingqueue,java提供的一种阻塞队列的实现,用来简单的实现生产者消费者模型。3、生产者代码public class Producer implements Runnable { private BlockingQueue<String&g...原创 2018-03-23 14:10:50 · 1110 阅读 · 0 评论