我可以执行一个Java类文件的多个实例吗?

我可以执行一个Java类文件的多个实例吗?,java,binary,jvm,multiple-instances,Java,Binary,Jvm,Multiple Instances,我正在考虑使用不同的配置文件(作为命令行参数)执行相同java二进制文件(套接字应用程序)的多个实例。JVM是否正确处理了这种情况?换句话说,如果我没有任何公共资源(可以锁定的文件等),这种方法会产生任何问题吗?如果是这样的话,我需要注意哪些事情。如果从命令行启动多个java实例,则会得到多个正在运行的JVM(每个实例一个) 如果没有共享资源,您应该不会有任何问题。没有问题。实际上,我觉得相反的情况有点恼人——没有(简单的)方法限制同一台计算机中可启动实例的数量。正如Matthew前面指出的,只

我正在考虑使用不同的配置文件(作为命令行参数)执行相同java二进制文件(套接字应用程序)的多个实例。JVM是否正确处理了这种情况?换句话说,如果我没有任何公共资源(可以锁定的文件等),这种方法会产生任何问题吗?如果是这样的话,我需要注意哪些事情。

如果从命令行启动多个java实例,则会得到多个正在运行的JVM(每个实例一个)


如果没有共享资源,您应该不会有任何问题。

没有问题。实际上,我觉得相反的情况有点恼人——没有(简单的)方法限制同一台计算机中可启动实例的数量。

正如Matthew前面指出的,只要没有共享资源,我们就不会看到问题

再补充一点,JVM就像一个容器,为java程序和每次从命令行调用java时创建的JVM提供执行环境


如果有多个实例,则可能存在内存使用过多和启动时间缓慢的问题。大部分JRE是共享的,但不是所有的,也不是通用的应用程序代码和资源。一些JRE在一定程度上解决了这一问题,例如,IBMJRE 6的最新版本共享编译的应用程序代码


如果您的所有代码都编写得很好(例如,没有可变的静态变量(包括单例),那么使用单个进程应该不会有问题。

有,只要连接到一个ServerSocket,后续的启动将无法连接到同一个ServerSocket…只要没有其他程序使用相同的端口,在这种情况下,您甚至无法启动程序的一个实例:)现在这是可以修复的,而且可能性很小。至少比“不容易的方法”要好