单例的意思就是 只有一个实例可供使用.
比如,系统只有一个窗口管理,或者一个数据库访问点等,创建太多的类完全是没有意义的.
通过static final类修饰该Field,使其不可被重复创建.
饿汉式,就是在单例类被创建时,该类的对象就被创建了,随时可以使用..
很方便,但是如果没有使用该单例类的话,则可能会浪费资源.
懒汉式,是在被调用时,才创建对象. 因为CPU的切换机制的问题,
懒汉式存在安全问题,或者多线程访问时,出现异常而创建多个对象.
这样就违背了单例类的初衷.
所以懒汉式一般需要对其加锁 (synchronized) 来同步.
虽然同步的都是线程安全的,但是效率低下.
饿汉式单例类是为了应用设计出来的,所以一般都会使用,资源也就不是浪费了. |