<h4>kotlin中的单例</h4>
<p><code>
class SingletonTestKt{
//静态内部类
/*companion object {
fun get() = Holder.INSTANCE
}
private object Holder{
val INSTANCE = SingletonTestKt
}*/
//双重限制
/*companion object {
val instance by lazy(LazyThreadSafetyMode.SYNCHRONIZED){
SingletonTestKt
}
}*/
//同步锁
/*companion object {
var instance: SingletonTestKt? = null
@Synchronized
fun get(): SingletonTestKt{
if(instance == null) instance = SingletonTestKt()
return instance!!
}
}*/
//基本懒加载
/*companion object{
val instance by lazy(LazyThreadSafetyMode.NONE){
SingletonTestKt
}
}*/
}
/*
//懒加载
object SingletonTestKt {
}*/
</p></code>
<h4>java中的单例</h4>
<p><code>
public class SingletonTest {
private SingletonTest(){}
//静态内部类
//懒加载 + 同步锁
/*public static class Holder{
public static SingletonTest INSTANCE = new SingletonTest();
}
public static SingletonTest getInstance(){
return Holder.INSTANCE;
}*/
//双重限制
//懒加载 + 同步锁
/*private static volatile SingletonTest INSTANCE;
public static SingletonTest getInstance(){
if(INSTANCE == null){
synchronized (SingletonTest.class){
if(INSTANCE == null)
INSTANCE = new SingletonTest();
}
}
return INSTANCE;
}*/
//同步锁
/*private static SingletonTest INSTANCE;
public static synchronized SingletonTest getInstance(){
if(INSTANCE == null)
INSTANCE = new SingletonTest();
return INSTANCE
}*/
//基本懒加载
/*private static SingletonTest INSTANCE;
public static SingletonTest getInstance(){
if(INSTANCE == null)
INSTANCE = new SingletonTest();
return INSTANCE;
}*/
//懒加载
/*
private static SingletonTest INSTANCE = new SingletonTest();
public static SingletonTest getInstance(){
return INSTANCE;
}*/
}
</p></code>
网友评论