懒汉式单例和多线程问题
class huyiyu
{
public static void main(String[] args)
{
// Single s1 = Single.getInstance();
// Single s2 = Single.getInstance();
// System.out.println(s1 == s2);
GetSingle[] Gs = new GetSingle[10];
for(int i = 0; i < Gs.length;i++)
Gs[i] = new GetSingle();
for(int i = 0; i < Gs.length;i++)
Gs[i].start();
for(int i = 0; i < Gs.length;i++)
{
System.out.println(Gs[i].getS1());
}
}
}
class Single
{
private Single()
{
}
private static Single obj = null;
public static synchronized Single getInstance()
{
if(obj == null)
obj = new Single();
return obj;
}
}
class GetSingle extends Thread
{
private Single s1;
public void run()
{
while(s1 == null)//为什么会返回空 我都上锁了
this.s1 = Single.getInstance();
}
public Single getS1()
{
return s1;
}
}
首先代码 如上图 然后 发现数组内其实会获取到空指针 我实在找不到错误 求指正为什么
输出结果:
null
Single@4e25154f
Single@4e25154f
Single@4e25154f
Single@4e25154f
Single@4e25154f
Single@4e25154f
Single@4e25154f
Single@4e25154f
Single@4e25154f