摘要: Lock使用方式 使用Lock需要显式的加锁和解锁 解锁操作需要放在finally块里,防止锁被超界获取 另外,获取锁的操作不能放在try块里,因为Lock是可重入锁,如果外层也已经调用lock()方法,而里层因为调用lock()抛出异常然后调用unlock,外层无法知晓,导致外层代码无法正确同步。 阅读全文
posted @ 2018-10-11 09:24 我为了部落 阅读(198) 评论(0) 推荐(0)
摘要: 1、什么是线程池: java.util.concurrent.Executors提供了一个 java.util.concurrent.Executor接口的实现用于创建线程池 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服 阅读全文
posted @ 2018-10-11 08:48 我为了部落 阅读(90) 评论(0) 推荐(0)
摘要: 要了解ThreadLocal,首先搞清楚ThreadLocal 是什么?是用来解决什么问题的? ThreadLocal 是线程的局部变量, 是每一个线程所单独持有的,其他线程不能对其进行访问, 通常是类中的 private static 字段,是对该字段初始值的一个拷贝,它们希望将状态与某一个线程( 阅读全文
posted @ 2018-10-10 13:38 我为了部落 阅读(865) 评论(0) 推荐(0)
摘要: 1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候 线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定, 如果使用 synchronized ,如果A不释放,B将一直等下去,不能被中断 如果 使用 阅读全文
posted @ 2018-10-09 15:27 我为了部落 阅读(931) 评论(0) 推荐(0)
摘要: 线程安全的单例模式 双重效验锁 1.单例模式:确保一个类只有一个实例,自行实例化并向系统提供这个实例(举例 例如有三个线程 使用静态方法,让所创建出来的对象名来调取每一个线程。) 2.单例模式分类:饿单例模式(类加载时实例化一个对象给自己的引用),懒单例模式(调用取得实例的方法如getInstanc 阅读全文
posted @ 2018-10-09 14:41 我为了部落 阅读(1111) 评论(0) 推荐(0)