Singleton模式public class Test {  private Test test = new Test();  public Test getInstance(){
    return test;
  }  // 私有化构造方法,使其无法在本类以外生成新的实例
  private Test(){
    //...
  }
  
  //...}

解决方案 »

  1.   

    漏了用static:
      private static Test test = new Test();
      

  2.   

    // 上面的错误太多,修正如下:
    public class Test {  private static Test test = new Test();  public static Test getInstance(){
        return test;
      }  // 私有化构造方法,使其无法在本类以外生成新的实例
      private Test(){
        //...
      }
      
      //...}
      

  3.   

    不是Singleton模式那么简单的事吧,在不同的ClassLoader中怎么保证只有一个实例呢??
      

  4.   

    class Sing{
      private Sing(){
      }
      private static Sing sing = null;  public static Sing newInstance(){
        if(sing==null){
          sing = new Sing();
        }else{
          return sing;
        }
      return sing;
      }
    }
      

  5.   

    yaray(雅睿,生活在别处,工作在别墅),不至于吧,你的答案和楼主的问题根本不是一回事情!建议楼主搜索一下"文件锁",我没做过,只是看到过!
      

  6.   

    同一个vm应该只有一个ClassLoader,所以Singleton模式应该是可行的
      

  7.   

    应该就像hoozheng(春风) 写的那样
      

  8.   

    yaray说的这种Singleton绝对不行!!!
      

  9.   

    楼主说的这个跟单例就不是一码事。
    告诉楼主一个土办法,但很管用。
    程序运行时,开一个socket占用一个端口(当然取个古怪点的数字)。
    启动时判断是否这个端口被占用。如果占用了,就时已经有实例运行了。
      

  10.   

    以前有碰到类似的问题,我是用生成临时文件的办法做的。
    就是在bat要控制的代码前加一段代码将某个0字节文件如a.flag拷贝一个备份为arun.flag。
    每次运行时判断是否存在arun.flag文件。
    运行结束删除arun.flag。
      

  11.   

    进程间通信问题。
    java没有可在进程间共享的互斥量,看来只有用上面说的文件锁或者socket端口了。
      

  12.   

    目前我知道的只有文件锁和socket两种方式,我的程序是用socket实现的,不过似乎比较浪费,有拿牛刀杀鸡的感觉,可用文件锁心里又不塌实 -_-
      

  13.   

    这个文件锁的在windows下测试应该没问题,不知道其他系统情况如何~~~import java.io.*;
    import java.nio.channels.FileChannel;
    import java.nio.channels.FileLock;class LockFile {
      private static String file = "files.lock";
      private static FileChannel ch;
      private static FileLock lock;  public static boolean lock() {
        try {
          ch = new FileOutputStream("files.lock").getChannel();
          lock = ch.tryLock();
          if (lock == null)
            return false;
          else
            return true;
        }
        catch (FileNotFoundException ex) {
          System.out.println(ex.getMessage());
          return false;
        }
        catch (IOException ex) {
          System.out.println(ex.getMessage());
          return false;
        }
      }  public static void unLock() {
        try {
          lock.release();
        }
        catch (IOException ex2) {
        }
        try {
          ch.close();
        }
        catch (IOException ex3) {
        }
      }
    }public class SingleRun {
      public static void main(String[] args) {
        if (!LockFile.lock()) {
          System.out.println("One of my Thread has run!");
          System.exit(1);
        }
        
        try {
          Thread.sleep(10000);
        }
        catch (InterruptedException ex) {
        }
        
        LockFile.unLock();
      }
    }
      

  14.   

    知识有限,除了用文件枷锁和socket还有什么好方法??
      

  15.   

    单例模式 
    然后方法实现同步
    注意不可dcl