----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------..
/*
* 多线程中的单例设计模式.有两种方式
* 那么单例设计模式的好处就是,为了保证对象在内存中的唯一性.
*
* 第一种方式是;饿汉式
* class Singla{
private static final Singla s = new Singla();
private Singla(){}
public static Singla getInstence(){
return s;
}
}
那么第二种方式;懒汉式
这种单例设计模式,是存在线程安全问题的,为什么这么说呢?
在多个线程操作,的时候,假设在判断过if的时候,CPU 不执行了,那么这个时候有可能
执行其他的线程,在这个时候,他们都在if下面这个地方卡住了,那么当这两个
线程在次执行的时候,那么机会产生两个对象,那么这个时候,就不能保证对象在
内存中的唯一性了,那么为了解决这个问题呢,就加上了同步代码块,同步代码块.是要
用到锁的,锁就是对象,那么这个时候连对象都没有怎么没办呢,但是现在什么已经是
存在的了,就是该类的字节码文件已经被JVM加载进内存了,那么这个时候存在的就只有
这么一个对象,那么这个时候用到的锁就是该类的字节码文件对象.那么我们知道在加上
同步代码块以后再执行的时候相对于来说的话,效率会比较的慢,那么怎么解决这个问题
呢?
加上双重判断来解决,最外面一层的判断,如果 s == null 才会向下执行.else 就不会了
那么这样的话,相对于来说效率就会提高了
*
*/
class Singla{
private static Singla s = null;
private Singla(){}
public static Singla getInstence(){
if(s == null){
synchronized(Singla.class){
if(s == null)
s = new Singla();
}
}
return s;
}
}
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------..