public class Singleton {
private static final Singleton instance = new Singleton();
/**
* 防止其他人new对象
*/
private Singleton(){
System.out.println("++++init");
}
public static Singleton getInstance(){
return instance;
}
}
有人说上面这种单粒模式在Singleton对象很大的时候,系统启动会很慢。 系统启动指的是什么?
Load Class的时候? 我试过了Load Class的时候不会输出构造函数中的++++init
求各位大师的指点!!!!系统启动(初始化)指的是什么?单粒设计模式
private static final Singleton instance = new Singleton();
/**
* 防止其他人new对象
*/
private Singleton(){
System.out.println("++++init");
}
public static Singleton getInstance(){
return instance;
}
}
有人说上面这种单粒模式在Singleton对象很大的时候,系统启动会很慢。 系统启动指的是什么?
Load Class的时候? 我试过了Load Class的时候不会输出构造函数中的++++init
求各位大师的指点!!!!系统启动(初始化)指的是什么?单粒设计模式
解决方案 »
- 好象是因为sum的数据超过了int形,hibernate就不工作了
- Java Deep Clone
- 新手拿个JAVA认证需要多长时间?
- 类中的方法 在实例化以后 内存上的分配是怎么样的?可以解释一下吗?
- 如何调整JTree中JCheckBox类型节点宽度以使节点文字全部显示?
- 强积金
- 学java要下jdk 现在最新的是什么版啊
- 请教一个小问题!!!!!!!!!!!
- java的事件处理机制如何运用?
- 就当散分,来着有分。谁能说清楚:J2SE,J2EE,J2ME.的深层次的关系。
- 一道java解析字符串,然后以树形结构存入数据库的一道题 --- 各路牛人请搭救一下我吧。
- 多线程从sina网采集股票实时数据
我的问题是:什么时候输出++++init,我觉得是掉用getInstance到的时候输出 但是网上大部分人都说不是
你的小例子改成这样试试:
public class Singleton {
private static final Singleton instance = null;
/**
* 防止其他人new对象
*/
private Singleton(){
System.out.println("++++init");
}
public static Singleton getInstance(){
if(null == instance){
instance = new Singleton();
}
return instance;
}
}
你的小例子改成这样试试:
public class Singleton {
private static final Singleton instance = null;
/**
* 防止其他人new对象
*/
private Singleton(){
System.out.println("++++init");
}
public static Singleton getInstance(){
if(null == instance){
instance = new Singleton();
}
return instance;
}
}
你这是误导啊,本来楼主的代码没有什么大问题的,只是在少数情况下提前创建了对象,可能有浪费,而你这个代码就会存在线程安全问题了。
你的小例子改成这样试试:
public class Singleton {
private static final Singleton instance = null;
/**
* 防止其他人new对象
*/
private Singleton(){
System.out.println("++++init");
}
public static Singleton getInstance(){
if(null == instance){
instance = new Singleton();
}
return instance;
}
}
你这是误导啊,本来楼主的代码没有什么大问题的,只是在少数情况下提前创建了对象,可能有浪费,而你这个代码就会存在线程安全问题了。
只是举个例子,别激动嘛~咱们学单例,第一个例子不就是这样的么,慢慢来呀~
你的小例子改成这样试试:
public class Singleton {
private static final Singleton instance = null;
/**
* 防止其他人new对象
*/
private Singleton(){
System.out.println("++++init");
}
public static Singleton getInstance(){
if(null == instance){
instance = new Singleton();
}
return instance;
}
}
你这是误导啊,本来楼主的代码没有什么大问题的,只是在少数情况下提前创建了对象,可能有浪费,而你这个代码就会存在线程安全问题了。
关键是在什么情况下提起创建 我问的就是这个 没有调getInstance就会创建?
你的小例子改成这样试试:
public class Singleton {
private static final Singleton instance = null;
/**
* 防止其他人new对象
*/
private Singleton(){
System.out.println("++++init");
}
public static Singleton getInstance(){
if(null == instance){
instance = new Singleton();
}
return instance;
}
}
你这是误导啊,本来楼主的代码没有什么大问题的,只是在少数情况下提前创建了对象,可能有浪费,而你这个代码就会存在线程安全问题了。
关键是在什么情况下提起创建 我问的就是这个 没有调getInstance就会创建?
你做的是在类加载的时候就会创建。
你的小例子改成这样试试:
public class Singleton {
private static final Singleton instance = null;
/**
* 防止其他人new对象
*/
private Singleton(){
System.out.println("++++init");
}
public static Singleton getInstance(){
if(null == instance){
instance = new Singleton();
}
return instance;
}
}
你这是误导啊,本来楼主的代码没有什么大问题的,只是在少数情况下提前创建了对象,可能有浪费,而你这个代码就会存在线程安全问题了。
关键是在什么情况下提起创建 我问的就是这个 没有调getInstance就会创建?
你做的是在类加载的时候就会创建。
类加载?classLoader.load("Singleton")的时候吗? 如果是这一句 我试过了 不行