j2se1.4中的java.nio.channel.FileLock可以解决你的问题。

解决方案 »

  1.   

    看来只能是操作文件,数据库或是开个socket来判断!
      

  2.   

    开Socket不是正规的商用软件解决方案,socket资源比较紧俏:)
    如果你是写middle-ware的就应该有所了解。
      

  3.   

    守住某一端口是唯一正确的做法,事实上很多软件就是这样做的,比较有名的就是jEdit(开源的,你可以看看),如果用文件锁(FileLock)的话,不能保证程序非正常退出时能即时解锁,另外就是singleton就更不用提了,那是在一个虚拟机运行环境里有效,这里的情况是防止启动多个虚拟机环境。
      

  4.   

    〉〉如果用文件锁(FileLock)的话,不能保证程序非正常退出时能即时解锁
      jdk1.4中的FileLock是底层支持的,就算JVM异常,也会解锁的,这个类是专门用来实现单引导的。