04 2018 档案

摘要:线程池的好处 降低资源消耗。虽然我们程序员创建一个线程很容易,直接使用 new Thread() 创建就可以了,但是操作系统做的工作会多很多,它需要发出 系统调用,陷入内核,调用内核 API 创建线程,为线程分配资源等,这一些操作有很大的开销,通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 阅读全文
posted @ 2018-04-07 22:40 意犹未尽 阅读(245) 评论(0) 推荐(0) 编辑
摘要:非阻塞无界队列 ConcurrentLinkedQueue public static void main(String[] args) throws InterruptedException { ConcurrentLinkedQueue queue=new ConcurrentLinkedQue 阅读全文
posted @ 2018-04-07 16:48 意犹未尽 阅读(2038) 评论(0) 推荐(0) 编辑
摘要:ArrayList在单线程下是高效的,但是在多线程下是线程不安全的 ArrayList在多线程的线程不安全的几种体现 删除元素时。a和b同时删除索引为4个数据。这个时候a线程先执行 将4后面的元素往前移动一位。size-- 这个时候b线程也删除 就删除到别的元素。如果是删除第一个元素。a线程size 阅读全文
posted @ 2018-04-07 14:57 意犹未尽 阅读(297) 评论(0) 推荐(0) 编辑
摘要:HashMap不是线程安全的。在多线程操作下 可能会数据丢失! 首先我们了解一下hashmap的存储结构。 hashmap内部是通过数组加链表的形式存储的。 链表的作用则是防止hash碰撞产生的数据丢失而设计的。 什么是hash碰撞 2个不同的key hashcode相同 比如key1通过hashc 阅读全文
posted @ 2018-04-06 16:55 意犹未尽 阅读(610) 评论(0) 推荐(0) 编辑
摘要:volatile关键字的2个作用 1.线程的可见性 2.防止指令重排 什么是线程的可见性? 线程的可见性 就是一个线程对一个变量进行更改操作 其他线程获取会获得最新的值。 线程在执行的行 操作主线程的变量。会将变量的副本拷贝一份到线程的工作区域(避免每次到主线程读取 提高效率),在更改后的一段时间内 阅读全文
posted @ 2018-04-04 18:33 意犹未尽 阅读(3602) 评论(3) 推荐(2) 编辑
摘要:在多线程中同时进行i++操作 不能保证i的原子性。i++ 可以看作为为以下几个步骤 1.读取i的值 2.计算i+1 3.赋值 在多线程下 可能还在没有来得及赋值 其他线程已经复制,再赋值就是脏数据 synchronized则能保证原子性。synchronized 一个线程获得锁对象则会将对象标记为锁 阅读全文
posted @ 2018-04-02 22:39 意犹未尽 阅读(349) 评论(0) 推荐(0) 编辑
摘要:以前创建了博客园之后就很少写博客,后来慢慢发现自己很久以前做过的东西以及深入学习的知识点久了之后很容易就变得模糊,当再次用到又是到处翻阅资料。后来尝试将自己深入学习和实践过的知识点详细整理成博客,当遇到问题首先在自己博客里面查阅,如果无法解决 再去查阅资料,然后解决问题后再整理到博客,慢慢的就养成了 阅读全文
posted @ 2018-04-02 20:49 意犹未尽 阅读(185) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示