1.在一个时刻点上一个JVM同时运行多个线程吗?public class A {
private static A instance; private A() {
} public static A getInstance() {
if (instance == null) {
instance = new A();
}
return instance;
}}
当在很短的一段时间内有大量的线程同时调用A.getInstance()方法时,能确保内存中只有一个A的实例吗?

解决方案 »

  1.   

    要看你的电脑是否是双cup或多核  单核的同一时钟点上只有一个线程在运行,它的多线程是交替运行实现的.
    双cup或多核就可以达到同步运行...一个java程序启动时,最少启动了两个线程 main线程 和 垃圾处理机制
    兄弟刚学了点...知道的不多,..
      

  2.   

    在一个时间点上,只有一个线程在运行。是一种并发! 如果你是双核的cpu 就能做到真正的并行了
      

  3.   

    1.在一个时刻点上一个JVM同时运行多个线程吗?
    多CPU是可以的当在很短的一段时间内有大量的线程同时调用A.getInstance()方法时,能确保内存中只有一个A的实例吗?
    不能确保,因为可能某个线程进入if (instance == null) {判断后,可能CPU被收回了,换下一个线程执行,假设另一个线程,进入if (instance == null)判断后,执行instance = new A(); 然后系统把CPU回收交回给之前的某个线程,那么之前的某个线程会直接执行instance = new A(); 也就像instance = new A(); 可能被执行多次,内存中确实是只有一个A的实例,但是这个实例被变更过了,如果这个实例有状态的话,状态就不一定正确了。
      

  4.   


    public class A {
    private volatile static A instance; 
    private A() {
    }public static A getInstance() {
    if (instance == null) {
     synchronized(A.class){
    instance = new A();
    }
    }
    return instance;
    }}
    双重枷锁就没事了 也不会影响性能
      

  5.   

    首先你的双锁单例写错了
    应该是
    public class Singleton{ private static Singleton instance;private Singleton(){};public static Singleton getInstance(){  if(instance==null){synchronized(this)if(instance==null)instance =new Singleton()}return instance;}code]然后就是双锁单例在java中并不适合 第二个instance==null 判断会被编译器认为是不可达代码,会被优化掉。
    多线程单例的解决方案   可以使用内部类实现
    [code=Java]
    public class Singleton {private static class Instance{static final Tax instance=new Single();}private static Singleton instance;private Singleton(){};public static Singleton getInstance(){return Instance.instance;}Instance 是内部类 只被实例化一次所以次解决方案可行。 
      

  6.   


    一般设计模式书上所说的单例都是适合单线程的,  所谓双锁模式是首先在C++社区提出的,但是并不适合java   java 中一般可以通过我上面给出的代码实现
      

  7.   


    多处理机下,多线程是否可以同时运行依据操作系统而定。  一般来说我们的线程都是对应于操作系统中的内核线程,由操作系统调度,有的操作系统会按照进程来分配CPU 也就是,多个线程只能公用一个CPU ,而有的操作系统则是按照线程来调度。
      

  8.   

    可以使用 enum实现单例。
      

  9.   


    static方法中可以synchronized(this)么?
      

  10.   

    public class A {
    private static A instance = new A();private A() {
    }public static A getInstance() {return instance;
    }}
      

  11.   

    单例模式使用 懒汉模式和饿汉模式以及使用enum方式的性能测试