随笔分类 -  java并发编程

java并发编程系列七:volatile和sinchronized底层实现原理
摘要:一、线程安全 1. 怎样让多线程下的类安全起来 无状态、加锁、让类不可变、栈封闭、安全的发布对象 2. 死锁 2.1 死锁概念及解决死锁的原则 一定发生在多个线程争夺多个资源里的情况下,发生的原因是每个线程拿到了某个(某些)资源不释放,同时等待着其他线程所持有的资源。 解决死锁的原则就是确保正确的获 阅读全文

posted @ 2016-03-02 14:05 小人物的奋斗 阅读(481) 评论(0) 推荐(0) 编辑

java多线程系列六、线程池
摘要:一. 线程池简介 1. 线程池的概念: 线程池就是首先创建一些线程,它们的集合称为线程池。 2. 使用线程池的好处 a) 降低资源的消耗。使用线程池不用频繁的创建线程和销毁线程 b) 提高响应速度,任务:T1创建线程时间,T2任务执行时间,T3线程销毁时间,线程池空闲的时候可以去执行T1和T2,从而 阅读全文

posted @ 2016-02-29 19:27 小人物的奋斗 阅读(634) 评论(0) 推荐(0) 编辑

java多线程系列五、并发容器
摘要:一、ConcurrentHashMap 1、为什么要使用ConcurrentHashMap 在多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,HashMap在并发执行put操作时会引起死循环,是因为多线程会导致HashMap的Entry链表 形成环形数据结构 阅读全文

posted @ 2016-02-29 10:41 小人物的奋斗 阅读(625) 评论(0) 推荐(0) 编辑

java并发编程系列四、AQS-AbstractQueuedSynchronizer
摘要:什么是AbstractQueuedSynchronizer?为什么我们要分析它? AQS:抽象队列同步器,原理是:当多个线程去获取锁的时候,如果获取锁失败了,当前线程就会被打包成一个node节点放入同步队列里面使用LockSuport的park方法阻塞起来,如果有线程释放了锁,放入同步队列的线程就会 阅读全文

posted @ 2016-02-26 17:45 小人物的奋斗 阅读(572) 评论(0) 推荐(0) 编辑

java并发编程系列三、Lock和Condition
摘要:有了synchronized为什么还要Lock? 因为Lock和synchronized比较有如下优点 1、 尝试非阻塞地获取锁 2、 获取锁的过程可以被中断 3、 超时获取锁 Lock的标准用法 Lock的常用方法 Lock() 获取锁 tryLock尝试非阻塞地获取锁 lockInterrupt 阅读全文

posted @ 2016-02-23 18:12 小人物的奋斗 阅读(680) 评论(0) 推荐(0) 编辑

java并发编程系列二:原子操作/CAS
摘要:什么是原子操作 不可被中断的一个或者一系列操作 实现原子操作的方式 Java可以通过锁和循环CAS的方式实现原子操作 CAS( Compare And Swap ) 为什么要有CAS? Compare And Swap就是比较并且交换的一个原子操作,由Cpu在指令级别上进行保证。 为什么要有CAS: 阅读全文

posted @ 2016-02-22 14:22 小人物的奋斗 阅读(733) 评论(0) 推荐(0) 编辑

java并发编程系列一、多线程
摘要:一、什么是线程 一个应用就是一个进程、一个进程由多个线程组成。一个生产车间比作是一个进程、工人比作是线程。当任务比较多的时候,增加工人可以提高效率,同时成本就是支付费用(机器资源,内存)也会增加。 输出: 5:Attach Listener //获取内存dump,线程dump 4:Signal Di 阅读全文

posted @ 2016-02-22 14:14 小人物的奋斗 阅读(2861) 评论(0) 推荐(0) 编辑

导航