java编程题:编写一个单例模式
2017-03-28 19:48
525 查看
/**
* java编程题:编写一个单例模式
*/
public class Singleton {
/*
//1. 饿汉式,饿汉式,线程安全 但效率比较低 。。。一上来就new对象,真够饿的
private Singleton(){}
private static final Singleton Singleton = new Singleton();
public static Singleton getInstance(){
return Singleton;
}
*/
/*
//2. 懒汉式,非线程安全 。。。等老板来叫了,才去做事,小子真懒
private Singleton(){}
private static Singleton Singleton = null;
public static Singleton getInstance(){
if(Singleton==null){
Singleton = new Singleton();
}
return Singleton;
}
*/
/*
//3. 懒汉式,线程安全,但效率很低 。。。99%情况下不需要同步
private Singleton(){}
private static Singleton Singleton = null;
public static synchronized Singleton getInstance(){ //方法上加synchronized同步
if(Singleton==null){
Singleton = new Singleton();
}
return Singleton;
}
*/
/*
//4. 双重校验锁
private Singleton(){}
//JDK5以后,为避免双重检查锁存在的问题,加入了volatile,是保证变量修改的可见性
private static volatile Singleton Singleton = null;
public static Singleton getInstance(){
if(Singleton==null){
synchronized(Singleton.class){ //加synchronized关键字同步
if(Singleton==null){
Singleton = new Singleton();
}
}
}
return Singleton;
}
*/
/*
//5. 静态内部类
private Singleton(){}
private static class SingletonHolder {
private static final Singleton singleton = new Singleton();
}
public static final Singleton getInstance(){
return SingletonHolder.singleton;
}
*/
//6. 枚举
private static enum EnumSingleton{
INSTANCE;
private Singleton singleton;
//JVM会保证此方法绝对只调用一次
private EnumSingleton(){
singleton = new Singleton();
}
public Singleton getInstance(){
return singleton;
}
}
}
参考: http://cantellow.iteye.com/blog/838473 http://www.cnblogs.com/yinxiaoqiexuxing/p/5605338.html http://blog.csdn.net/zhanlanmg/article/details/49944991
* java编程题:编写一个单例模式
*/
public class Singleton {
/*
//1. 饿汉式,饿汉式,线程安全 但效率比较低 。。。一上来就new对象,真够饿的
private Singleton(){}
private static final Singleton Singleton = new Singleton();
public static Singleton getInstance(){
return Singleton;
}
*/
/*
//2. 懒汉式,非线程安全 。。。等老板来叫了,才去做事,小子真懒
private Singleton(){}
private static Singleton Singleton = null;
public static Singleton getInstance(){
if(Singleton==null){
Singleton = new Singleton();
}
return Singleton;
}
*/
/*
//3. 懒汉式,线程安全,但效率很低 。。。99%情况下不需要同步
private Singleton(){}
private static Singleton Singleton = null;
public static synchronized Singleton getInstance(){ //方法上加synchronized同步
if(Singleton==null){
Singleton = new Singleton();
}
return Singleton;
}
*/
/*
//4. 双重校验锁
private Singleton(){}
//JDK5以后,为避免双重检查锁存在的问题,加入了volatile,是保证变量修改的可见性
private static volatile Singleton Singleton = null;
public static Singleton getInstance(){
if(Singleton==null){
synchronized(Singleton.class){ //加synchronized关键字同步
if(Singleton==null){
Singleton = new Singleton();
}
}
}
return Singleton;
}
*/
/*
//5. 静态内部类
private Singleton(){}
private static class SingletonHolder {
private static final Singleton singleton = new Singleton();
}
public static final Singleton getInstance(){
return SingletonHolder.singleton;
}
*/
//6. 枚举
private static enum EnumSingleton{
INSTANCE;
private Singleton singleton;
//JVM会保证此方法绝对只调用一次
private EnumSingleton(){
singleton = new Singleton();
}
public Singleton getInstance(){
return singleton;
}
}
}
参考: http://cantellow.iteye.com/blog/838473 http://www.cnblogs.com/yinxiaoqiexuxing/p/5605338.html http://blog.csdn.net/zhanlanmg/article/details/49944991
相关文章推荐
- Java练习题-编写一个线程安全的延迟加载单例模式(懒汉模式)
- Java练习题-编写一个线程安全的延迟加载单例模式(懒汉模式)
- java编写一个延迟加载的单例设计模式
- java编写的一个缓存类cache,适用于生产者-消费者模式
- 一个使用JAVA编写的类似按键精灵的程序,支持脚本文件编写(含源代码)
- 一个使用JAVA编写的类似按键精灵的程序,支持脚本文件编写(含源代码)
- [基本算法]Java——编写一个线段类,实现基本数学算法
- 用JSP+Servlet+JavaBean模式实现一个简单的登录网页设计(JSP+Tomcat+MySQL)
- java 面试中的一道编写一个截取字符串的函数!!!!
- 编写一个JAVA的队列类-Java基础-Java-编程开发
- 一个使用JAVA编写的类似按键精灵的程序,支持脚本文件编写(含源代码)
- 一个使用JAVA编写的类似按键精灵的程序,支持脚本文件编写(含源代码)
- 编写一个JAVA的队列类
- 编写一个JAVA的队列类
- 一个用Java编写的ICQ
- 如何轻松编写一个强大的字符串分解器-Java基础-Java-编程开发
- [原创]一个简单例子解释 Java 工厂模式
- 【转载】java 面试中的一道编写一个截取字符串的函数
- 用Java和C#编写一个截屏小程序
- 在探索java i/o的Decorator模式时,遇到的一个问题.