黑马程序员技术交流社区

标题: 什么是单例设计模式 懒汉式 与饿汉式的区别 [打印本页]

作者: canvas    时间: 2011-9-15 23:51
标题: 什么是单例设计模式 懒汉式 与饿汉式的区别
class Student{
  private int age;
  private static Student s=new Student;
  private Student(){}
  public static getStudent();
{
  return s;
}
public void setAge(){
   this.age=age;
   }
public int getAge(){
   return age;
}     //  饿汉式



class Single{
private static Single s=null;
private Single(){
}
publuic static SinglegetInstance(){
   if(s==nul)      
   s=new Single();               懒汉式 怎么解决 线程的问题???????
   return s;
}
}//懒汉式
}
作者: 匿名    时间: 2011-9-16 00:06
if(s==null)
{
        synchronized(Single.class)//只允许一个Single类进入
        {
                if(s==null)
                        s=new person();
}
}
作者: 匿名    时间: 2011-9-16 19:47
是线程的并发问题么?还是说怎么让线程来运行它?
作者: 匿名    时间: 2011-9-16 21:37
觉得杜桂发同学说的好像可以
publuic static SinglegetInstance(){
synchronized(Single.class)
{
   if(s==nul)      
   s=new Single();      
}     
  return s;
}
这样应该就可以了
作者: 李星宇    时间: 2011-9-17 08:14
class Single
{
        private static Single s = null;
        private Single(){}

        public static Single getInstance()
        {
                 //使用双重if判断,减少判断的次数,提高懒汉式的效率。
                if(s==null)  
                {
                        synchronized(Single.class)
                        {
                                if(s==null)
                                        s = new Single();
                        }
                }
                return s;
        }
}
[ 本帖最后由 李星宇 于 2011-09-17  08:27 编辑 ]
作者: 匿名    时间: 2011-9-17 10:25
刚开始双重if语句没看懂,忘了考虑效率问题了,学习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2