1. 单例模式的作用和应用场景(不全后面补充)?
1.1保证里面Java应用程序中,只有一个实例的存在。比如:浏览网站显示当前在线人数,就是用一个单例的对象。
2.单例模式的几种写法
2.1注意事项:
(1)下面的写法都是正确的,只是有优缺点,适用的场景不同而已。
(2)单例模式都是把构造方法私有化,外部不能进行创建实例的操作,只提供给外界获取对象的方法。
2.2懒汉式,只适合单线程,多线程不安全
在多线程的情况下,可能会被实例多次
2.3对懒汉式进行改造,通过关键字synchronized对方法进行加锁,线程安全
这种写法能在多线程中很好的工作,但是每次调用都加同步锁,效率变低。
2.4饿汉式
不管用不用,都会在类加载的时候创建对象,如果使用十分少,就浪费了内存
2.5静态内部类
这个方式是最好的,使用的时候才创建单例对象,同时保证了线程的安全。
最后总结:单例模式的使用,依靠的就是静态内部类,使用的时候创建保证效率同时能安全。
思考:静态内部类还有那些好处?