问题:.编写一个单例(要求1.必须在方法中实现单例,2高性能)
1.
public class OneClass {
private static OneClass oneClass = null;
public static synchronized OneClass getInstance(){
while(oneClass == null){
oneClass = new OneClass();
}
return oneClass;
}
public static void main(String[] args) {
OneClass oneClass = OneClass.getInstance();
}
}
这样编写是可以生产单例,但是访问单例时效率不高,瓶颈在锁的位置。
对上面程序进行改写如下:
public class OneTest {
private static ThreadLocal<OneTest> local = new ThreadLocal<OneTest>();
private static OneTest oneClass = null;
private static Lock lock = new ReentrantLock();
public static OneTest getInstance(){
oneClass = local.get();
if(oneClass == null){
oneClass= new OneTest();
local.set(oneClass);
}
return oneClass;
}
}
这样编写性能就会比较高了。