- 浏览: 118551 次
- 性别:
- 来自: 深圳
文章分类
/** * 单例设计模式--懒汉式--饿汉式 * * 懒汉式--适用于实例的延迟加载--如果多线程访问,容易出现安全问题--可以通过加同步锁解决 * 加锁的效率问题需要考究 * * 延迟加载的单例设计模式--懒汉式 */ //饿汉式 class Single1 { private static final Single1 s = new Single1(); private Single1(){} public static Single1 getInstance(){ return s; } } //懒汉式--有问题的 /** * 在多线程访问过程中会产生安全隐患 */ // class Single2{ // private static Single2 s = null; // private Single2(){} // // public static Single2 getInstance(){ // if(s==null){ // //线程进入A--阻塞 // //线程进入B--阻塞 // //A唤醒--new一次 // //B唤醒--new一次 // //==>单例失效 // s = new Single2(); // } // return s; // } // } //安全解决方案 // class Single2{ // private static Single2 s = null; // private Single2(){} // // //问题--多线程,每个线程都想获取实例例都要判断一次锁--懒汉式加锁会影响程序效率 // //B不能进入-- // public static synchronized Single2 getInstance(){ // if(s==null){ // //A线程进入--阻塞--有同步锁 // s = new Single2(); // } // return s; // } //} //懒汉式--升级 class Single2{ private static Single2 s = null; private Single2(){} /** * 通过双重判断以提高懒汉式的效率 */ public static Single2 getInstance(){ if(s==null){ //2.B线程进入--被锁挡住,停止 synchronized(Single2.class) { //4.B进入不满足--null return s if(s==null){ //1.A线程进入--阻塞 //3.A唤醒--执行完毕 s = new Single2(); } } } return s; } }
发表评论
-
Java技术——你真的了解String类的intern()方法吗
2017-08-27 13:01 516http://blog.csdn.net/seu_calvin ... -
java的集合操作(交集、并集、差集)
2015-12-08 16:33 860/** * 求ls对ls2的差集,即ls中有, ... -
Deadlock found when trying to get lock; try restarting transaction
2015-12-02 20:13 1124批量插入数据遇到异常 this.getJdbcTemplate ... -
Spring3 MVC请求参数获取的几种方法
2015-11-20 14:33 602参考文档 http://www.cnblogs.com/le ... -
linux下安装jdk1.7
2015-07-06 12:20 442jdk下路径 http://www.oracle.com/te ... -
Java日期格式化常用方法
2014-06-21 21:03 532参考文档: http://www.cnblogs.com/ ... -
JAVA图片压缩
2014-04-23 22:26 610可以将像素高的图片转成像素低的图片,同时图片清晰度会降低 j ... -
JAVA的字符串拼接与性能
2014-01-17 15:33 460因此,在不考虑线程安全和同步的情况下,为了获得最高的性能,我们 ... -
MS Sql Server 中主从库的配置和使用介绍-数据库备份
2013-11-14 11:52 1170博客链接地址: http://technet.microsof ... -
JAVA的简单缓存机制
2013-10-30 16:57 734说明: 该缓存结构可能存在多线程安全问题,参考Concurre ... -
JAVA时间类SimpleDateFormat,Calendar,Date
2013-05-29 10:00 1117package javaTest; import j ... -
植物大战僵尸JAVA版
2013-05-21 10:40 937http://www.oschina.net/code/sni ... -
JDBC数据库访问操作,支持JSON格式
2013-05-21 10:29 1402开源中国: http://www.oschina.net/c ... -
java与JavaScript 将字符串每隔三位添加一个逗号(左往右、右往左)
2013-05-09 17:03 5016在平时处理现金金额显示时,我们经常会遇到这样的问题:从个位开始 ... -
JAVA多线程死锁程序Demo
2013-05-01 21:01 1042package thread; /** * JA ... -
JAVA多线程的5种状态
2013-05-01 18:31 1043JAVA多线程的五种状态图解 -
JAVA嵌套循环的break,continue,return
2013-04-22 22:25 3285package loop; public class ... -
JAVA的SuppressWarnings
2013-04-20 15:53 770有时候使用Myeclipse总是出现 黄色的警告,看起来不爽, ...
相关推荐
单例设计模式又分为两种方式,懒汉式和饿汉式。 懒汉式单例是一种延迟加载的单例模式,它只有当调用 getInstance 的时候,才会初始化这个单例。这种模式的优点是可以减少资源的加载和性能上的负担,但是它需要使用 ...
单例设计模式又分为两种方式,懒汉式和饿汉式。 懒汉式单例 懒汉式单例模式是指只有当调用getInstance的时候,才会初始化这个单例。这种方法可以保证线程安全,又减轻了资源加载和性能上的负担。下面是一个懒汉式...
### Java多线程—解决单例模式中的懒汉式的线程安全问题 #### 一、单例设计模式的线程安全问题 ##### (1)饿汉式没有线程安全问题 **饿汉式**是一种非常典型的单例模式实现方式,其特点是在类加载时就完成了实例...
单例模式是一种常用的软件设计模式,在这种模式中,一个类只能拥有一个实例,并且该类必须自行创建并提供这个实例。通常,单例模式用于确保某个类在整个应用程序生命周期中只存在一个实例,这有助于节省资源并简化对...
单例模式是设计模式中的一种常见模式,其主要目的是确保一个类只有一个实例,并提供一个全局访问点。在软件工程中,这种模式常用于控制资源的消耗,比如数据库连接、线程池等,避免频繁创建和销毁对象带来的性能开销...
### JAVA单例模式的几种实现方法 #### 一、饿汉式单例类 饿汉式单例类是在类初始化时就已经完成了实例化的操作。这种实现方式简单且线程安全,因为实例化过程是在编译期间完成的,不会受到多线程的影响。 **代码...
Java单例模式是一种常见的设计模式,它在软件工程中被广泛使用,以确保一个类只有一个实例,并提供一个全局访问点。这种模式对于那些资源管理、配置对象或日志记录等需要全局唯一的对象非常有用。在Java中实现单例...
在 Java 中,单例模式的写法有好几种,主要有懒汉式单例、饿汉式单例、登记式单例等。 懒汉式单例是一种常见的单例模式实现方式,它在第一次调用的时候实例化自己。下面是懒汉式单例的四种写法: 1、基本懒汉式...
在懒汉式单例模式中,我们需要使用同步关键字synchronized来避免多线程环境下的安全隐患。否则,懒汉式单例模式就谈不上单例了。 单例模式的应用 单例模式常用于JDBC链接数据库,例如,一个应用程序可能需要多个...
单例模式是设计模式中较为常见的一种,它确保一个类只有一个实例,并提供一个全局访问点。这种模式在实际开发中有着广泛的应用场景,比如系统配置管理、日志对象、线程池、数据库连接等。 #### 二、单例模式的特点 ...
单例模式是软件设计模式中的一种经典模式,它在Java编程中被广泛使用。这个模式的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这样做的好处在于可以控制实例的数量,减少资源消耗,同时简化对共享资源...
单例模式是设计模式中最简单的一种模式,其目的是确保某一个类只有一个实例存在,并且该类能够自行创建这个实例。这种模式通常用于那些需要频繁实例化然后销毁的对象,或者创建对象需要消耗大量资源的情况下,比如...
在多线程环境下,懒汉式单例需要加锁以保证线程安全。否则,可能会导致单例失败。 ```java public class Singleton { // 私有的默认构造子 private Singleton() {} // 已经自行实例化 private static Singleton...
单例模式是软件工程中常用的设计模式之一,尤其在Java编程中非常普遍。它的核心在于确保某类在整个应用程序生命周期中仅存在一个实例,并且该类能全局访问该实例。 **特点如下:** 1. **唯一性**:单例类只能有一...
在Java编程语言中,"Factory_single"这个主题很可能是指工厂模式和单例设计模式的讨论。这两种模式都是软件设计模式中的重要概念,广泛应用于创建对象的场景。 首先,让我们深入理解工厂模式。工厂模式是一种创建型...
但是,如果在多线程环境中,不加同步控制的懒汉式会导致多个线程同时创建单例,所以通常会使用`synchronized`关键字来保证线程安全。以下是懒汉式的Java实现: ```java public class Single2 { private static ...
在Java中,单子模式的实现通常有两种方式:饿汉式和懒汉式。 1. **饿汉式**: 饿汉式单例在类加载时即完成了实例化,因此它是线程安全的。在上面的`EagerSingletion`类中,`single`实例在类加载时被初始化,这意味...
单例设计模式是软件设计模式中的一种,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。在Java中,单例模式的应用广泛,尤其是在处理系统级服务、配置信息、线程池等需要全局共享的对象时。下面我们将...
Java中的单例模式是一种设计模式,它用于保证一个类只有一个实例,并提供一个全局访问点。在给定的代码示例中,我们看到了两种常见的单例实现方式:懒汉式和饿汉式。 **懒汉式单例模式**: 懒汉式单例的特点是延迟...