- 浏览: 16128 次
- 性别:
- 来自: 南宁
文章分类
最新评论
饿汉式会有效率的问题,即加载类时就会创建那个静态对象,会占据一定内存,如果你的类不大,第一种方法是好的.
如楼上所说,懒汉式会有线程安全的问题.可以通过 双重检查加锁 方法来解决.你可以去搜搜.百度上也有.
解决方法是:双重检查加锁机制实现
public class Singleton{
private volatile static Singleton uniqueInstance;
private Singleton(){}
public static Singleton getInstance(){
//先检查实例是否存在,如果不存在才进入下面的同步块
if(uniqueInstance==null)
{
//同步快,线程安全的创建实例
synchronized(Singleton.class){
if(uniqueInstance==null){
//再次检查实例是否存在,如果不存在,才真正的创建实例
uniqueInstance=new Singleton();
}
}
}
return uniqueInstance;
}
}
如楼上所说,懒汉式会有线程安全的问题.可以通过 双重检查加锁 方法来解决.你可以去搜搜.百度上也有.
解决方法是:双重检查加锁机制实现
public class Singleton{
private volatile static Singleton uniqueInstance;
private Singleton(){}
public static Singleton getInstance(){
//先检查实例是否存在,如果不存在才进入下面的同步块
if(uniqueInstance==null)
{
//同步快,线程安全的创建实例
synchronized(Singleton.class){
if(uniqueInstance==null){
//再次检查实例是否存在,如果不存在,才真正的创建实例
uniqueInstance=new Singleton();
}
}
}
return uniqueInstance;
}
}
发表评论
-
spring mvc 整合activiti 5.21
2017-11-27 10:58 0spring mvc 整合activiti 5.21 ... -
Maven 环境搭建
2017-11-03 15:54 451http://www.cnblogs.com/quanyong ... -
js url 传递中文参数,后台获取出现乱码
2017-10-23 08:58 0js url 传递中文参数,后台获取出现乱码,可以通过在后台这 ... -
session 和cookier的理解
2015-05-11 13:37 0session<会话需要> 和cookier< ... -
redis 在linux下的安装使用步骤
2015-05-05 09:44 01.网上下载redis-2.8.10.tar.gz文件 2.进 ... -
WSDL2JAVA 生成Stub文件以及调用
2015-04-15 15:58 0Step 1: 设置AXIS的环境变量 AXIS2_HOME ... -
webService 的使用方式之RPC方式、stub方式
2015-04-15 14:28 0/** * 创建日期 2015年4月14日 */ pack ... -
java多线程例子三种形式之一(最常用的,继承Thread的方式)——没有返回值、不可抛异常
2015-03-26 15:30 0/** * 功能说明:多线程例子测试, 实现继承Thread ... -
java多线程例子三种形式之一(最常用的,实现runable的方式)--没有返回值,不可抛异常
2015-03-26 15:25 0/** * 功能说明:多线程例子测试, 实现runnable ... -
性能测试调优
2015-03-12 13:49 0性能调优是一个宏大的工程,需要从宏观架构(比如拆分,冗余,读写 ... -
性能测试调优
2015-03-12 13:48 0性能调优是一个宏大的工程,需要从宏观架构(比如拆分,冗余,读写 ... -
2014.4.22(广州悦信无线科技有限公司)
2014-04-22 22:46 0笔试: 1.java基本数据类型,是什么?String是不是基 ... -
2014.4.21(地球村计算机软件)
2014-04-21 16:05 0初试: 1.填写个人履历表 2.数据挖掘方面的是否做过(其实p ... -
2014.04.17(一指通面试)
2014-04-17 23:06 01.自我介绍 2.最近做的项目 3.什么是struts 4.什 ... -
原型设计工具、uml常用建模工具
2014-04-14 22:41 0常用原型设计:Word、Visio(拓扑图、系统总体架构图)、 ... -
2014-04-15(广州中大凯旋信息科技有限公司)
2014-04-14 20:01 0中软:public等几个范围的区别和用法,考视图,管理表查询 ... -
Java 堆和栈的理解、程序的执行过程
2014-03-05 15:37 0程序执行的过程 程序从硬盘载入的内存->有四个内存区供程 ... -
java基础之基本数据类型
2014-02-28 10:50 0java基本数据类型就8种 ... -
java 对文件夹下指定后缀名的读写操作(运用递归的案例)
2014-07-21 22:00 1258package test; import java.io.B ... -
java 判断电子邮件是否正确
2014-02-10 16:08 0//接收用户输入的一个电子邮件地址,判断格式是否正确。 / ...
相关推荐
Java 单例模式 懒汉模式 //懒汉式 多线程中不可以保证是一个对象
Java中懒汉单例设计模式线程安全测试,单例设计模式的测试
### Java多线程—解决单例模式中的懒汉式的线程安全问题 #### 一、单例设计模式的线程安全问题 ##### (1)饿汉式没有线程安全问题 **饿汉式**是一种非常典型的单例模式实现方式,其特点是在类加载时就完成了实例...
"QT_C++单例模式懒汉+饿汉.rar"是一个压缩包,包含了关于C++在QT环境下实现单例模式的实例,分为懒汉式和饿汉式两种实现方式。 首先,我们来看一下单例模式的基本原理。单例模式通常用于那些需要频繁实例化然后销毁...
在多线程环境下,线程安全的单例模式尤为重要,因为如果不正确实现,可能会导致多个线程同时创建多个实例,违反了单例模式的基本原则。 在Java中,单例模式通常有以下几种实现方式: 1. 饿汉式(静态常量): ...
在实际开发中,我们还可以使用静态内部类或者枚举方式来实现单例模式,这些方法同样具有线程安全性和懒加载特性,而且代码更简洁。例如,使用枚举实现的单例模式如下: ```java public enum Singleton { INSTANCE;...
在C++中,实现单例模式有多种方式,这里我们将聚焦于懒汉式(Lazy Initialization)的实现。懒汉式单例的特点是延迟初始化,即只有在第一次使用时才会创建实例,这有助于提高程序的运行效率。 一、懒汉式单例模式的...
### 线程安全的单例模式详解 #### 一、单例模式简介 单例模式(Singleton Pattern)是软件开发中最常用的创建型设计模式之一,它的主要目标是确保一个类只有一个实例,并提供一个全局访问点。单例模式在很多场景下...
使用"懒汉模式"与"饿汉模式"实现c++的单例模式,并且确保了单例模式的第一次实例化的线程安全,以及程序结束时,单例对象的资源收回,以防内存资源的泄漏
它在多线程环境下解决了懒汉模式的问题,避免了同步的性能开销。代码示例: ```java public class Singleton { private volatile static Singleton instance; private Singleton() {} public static Singleton ...
- 懒汉式在第一次使用时创建实例,但需要处理线程安全问题;而饿汉式在程序启动时创建实例,线程安全但可能导致不必要的内存占用。 - 为了实现线程安全,懒汉式可以采用互斥锁或C++11的静态局部变量特性。 - 在实际...
总结来说,解决懒汉式单例的线程安全问题通常涉及到同步控制,如同步锁机制或双重检查锁定。选择哪种方法取决于性能和线程安全性的权衡。在实际开发中,考虑到性能和代码可读性,更推荐使用双重检查锁定来实现线程...
然而,如果不处理好线程安全问题,可能会导致多个线程同时创建多个实例,这就违背了单例模式的设计初衷。 在多线程环境下,线程安全的懒汉模式通常采用**双重检查锁定(Double-Checked Locking,DCL)**策略。这种...
线程安全,使用synchronized关键字
总结起来,多线程环境下的单例模式实现需要注意线程安全问题,尤其是懒汉式单例,需要采取适当的同步措施来防止多线程环境下的实例化问题。此外,对于不同场景的需求,可以选择不同的实现方式来优化性能和资源使用。
为了解决懒汉式单例模式的性能问题,有几种优化策略: 1. **双检锁/双重校验锁(DCL,即 double-checked locking)** ```java public class Singleton { private volatile static Singleton instance; private ...
* 单例模式可能会导致线程安全问题,如果不正确地实现单例模式,可能会导致线程安全问题。 单例模式是一种常用的软件设计模式,它可以提供一个全局访问点,简化系统的设计和实现。但是,我们需要正确地实现单例模式...
懒汉模式是延迟加载的方式,在首次调用getInstance()方法时才会创建实例;
为了解决懒汉式的线程安全问题,我们引入**饿汉式(Eager Initialization)**。在类加载时就创建单例对象,因此是线程安全的,但可能导致不必要的内存占用。代码如下: ```java public class Singleton { private ...
为解决线程安全问题,可以将 `getInstance` 方法声明为同步的,但这会降低效率。 ```java public class Singleton { private static Singleton instance; private Singleton() {} public synchronized static ...