单例-线程安全
来源:互联网 发布:美国 量子计算机 知乎 编辑:程序博客网 时间:2024/05/20 01:35
- /**
- * 懒汉式线程安全方法二
- */
- public class ThreadSafeSingleInstance {
- // 私有的静态实例
- private static ThreadSafeSingleInstance instance;
- // 私有的构造方法
- private ThreadSafeSingleInstance(){};
- /**
- * 同步块保护加二次判断
- * 解决问题
- */
- public static ThreadSafeSingleInstance getInstance() throws InterruptedException {
- if (instance == null) {
- // 进方法后进行实例判断,若实例为空,进入同步块
- // 多线程时,多个线程会同时进入到同步块外面等待
- // 此时,一个线程拿到ThreadSafeSingleInstance.class 后,其他线程在synchronized块外面等待
- // 待锁释放时,一个等待的线程拿到锁,同时再次检查实例是否为空
- // 并决定是否要创建实例
- synchronized (String.class) {//ThreadSafeSingleInstance.class) {
- Thread.sleep(1000);
- if (instance == null) {
- instance = new ThreadSafeSingleInstance();
- }
- }
- }
- return instance;
- }
- }
- /**
- * 饿汉式
- */
- public class HungrySingleInstance {
- // 私有的构造方法
- private HungrySingleInstance(){};
- // 静态类变量,初始化类时变创建对象
- private static HungrySingleInstance instance = new HungrySingleInstance();
- // 或采用静态块形式初始化instance
- static {
- instance = new HungrySingleInstance();
- }
- /**
- * 获取实例方法
- * 优点:
- * 线程安全,且不存在懒汉式的二次判断问题
- * 缺点:
- * 初始化即new 实例对象出来,违背资源利用习惯(即不管用不用都初始化实例出来)
- * @return
- */
- public static HungrySingleInstance getInstance() {
- return instance;
- }
- }
0 0
- 单例-线程安全
- 线程安全-单例模式
- 线程安全 单例模式
- 线程安全 单例模式
- java 线程安全单例
- 线程安全单例模式
- 单例模式 线程安全
- 单例模式 线程安全
- 线程安全单例模式
- 单例与线程安全
- 单例模式(线程安全)
- 线程安全单例模式
- 线程安全(单例与多例)
- 线程安全的单例模式
- 线程安全的单例模式
- Spring单例Bean和线程安全
- python 线程安全的单例 singleton
- 线程安全的单例模式
- myBatis批量添加,修改和删除
- RedHat RHEL6.3--64位Linux操作系统gcc-c++(g++)安装
- MD2 文件读取
- 浙大第15届校赛 3361 Valid Pattern Lock (搜索)
- JS面向对象编程之对象
- 单例-线程安全
- XML学习总结
- AndroidStudio 添加AndroidAnnotations
- java之容器类的总结
- linux alias
- 入职第一天总结----xshell跳板机
- 编写一个简单的license文件控制器
- String详解, String和CharSequence区别, StringBuilder和StringBuffer的区别
- Python正则表达式(增加详细示例code)