Supongamos que ejecuto dos programas Java simultáneamente en la misma máquina. ¿Los programas se ejecutarán en una sola instancia de JVM o se ejecutarán en dos instancias diferentes de JVM?¿Ejecuta simultáneamente los programas Java ejecutados en la misma JVM?
Respuesta
Si inicia cada uno con el comando java
(desde la línea de comandos) se ejecutarán como JVMs totalmente separados.
Los "Programas" se pueden iniciar como Threads separados que se ejecutan dentro de la JVM.
Depende del proveedor, pero es cierto para el estándar JVM de Oracle para Windows/Linux/OS x –
Depende de la plataforma y la implementación de JVM, pero normalmente se ejecutarían en máquinas virtuales separadas.
Suponiendo que quiso decir procesos por la palabra programas, entonces sí, comenzando dos procesos, creará dos JVM diferentes.
Se inicia un proceso de JVM utilizando el iniciador de aplicaciones java; esto debe proporcionar un punto de entrada a su programa, que es el método principal. Puede vincular a otras clases desde este punto de entrada, y desde otras clases también. Esto continuaría ocurriendo dentro del mismo proceso de JVM, a menos que inicie otro proceso (para ejecutar otro programa).
¿Se ejecutarán los programas en una sola instancia de JVM o se ejecutarán en dos instancias diferentes de JVM?
Depende de usted. El enfoque más simple es usar JVM separadas.
Lo que podría hacer es usar dos hilos separados. Para exampe
new Thread() {
public void run() {
System.out.println("this is running separately from the main thread!");
}
}.start();
Si quieres dos programas separados para interactuar que tendría que utilizar sockets
java
puede empezar a abrir una aplicación a la vez, pero se podría escribir un simple lanzador que toma la clase nombres como argumentos y los ejecuta en hilos separados. Un esquema rápida:
public class Launcher {
public static void main(String[] args) throws Exception {
for (int i = 0; i<args.length; i++) {
final Class clazz = Class.forName(args[i]);
new Thread(new Runnable() {
@Override
public void run() {
try{
Method main = clazz.getMethod("main", String[].class);
main.invoke(null, new Object[]{});
} catch(Exception e) {
// improper exception handling - just to keep it simple
}
}
}).start();
}
}
}
Llamarlo como
java -cp <classpath for all applications!> Launcher com.example.App1 com.example.App2
debe ejecutar la aplicación App1 y App2 dentro de la misma máquina virtual y en paralelo.
- 1. misma instancia del intérprete python que ejecuta varios scripts simultáneamente?
- 2. Benchmarking de programas Java
- 3. En Java, ¿los miembros de la clase estáticos están compartidos entre los programas?
- 4. Configuración de la memoria de los programas Java que se ejecuta desde Eclipse
- 5. ¿Cómo veo los comandos ejecutados por GNU?
- 6. Subprocesos de Java: ¿es posible ver/detener/eliminar un hilo en particular de un programa Java diferente que se ejecuta en la misma JVM?
- 7. ¿Se deben cargar los applets en la misma instancia de JVM?
- 8. ¿Existe alguna restricción especial en los comandos ejecutados por cron?
- 9. ¿Cómo se ejecuta scala bytecode en el jvm?
- 10. ¿Todos los programas en Java requieren una clase?
- 11. Windows no pasa argumentos de línea de comandos a programas Python ejecutados desde el shell
- 12. Java: ¿Cuál de los múltiples recursos en classpath JVM toma?
- 13. Explicación de la memoria Java (SUN JVM)
- 14. hay una JVM independiente que se ejecuta en una PC sin ningún sistema operativo
- 15. ¿Cómo usar cargadores de clases separados y ejecutar en la misma JVM? (OSGI)
- 16. es el comando "java" de la JVM?
- 17. Java: ¿Núcleos disponibles para la JVM?
- 18. Cómo liberar parches para programas Java
- 19. Establecer la misma fuente para todos los componentes Java
- 20. ¿Los programas de hibernación de Java no tienen código sql?
- 21. Simultáneamente, escriba
- 22. Libros recientes sobre Java JVM?
- 23. ¿Es OpenJDK JVM lo mismo que Oracle Java SE JVM?
- 24. ¿Hay una JVM por aplicación Java?
- 25. Java: Obtener código de bytes de la clase en tiempo de ejecución desde el interior de la misma JVM
- 26. cómo usar ByteArrayOutputStream y DataOutputStream simultáneamente (Java)
- 27. ¿Es posible ejecutar programas Java-GUI bajo los sistemas Dos
- 28. Naturaleza de Java y JavaScript simultáneamente
- 29. RoutedCommands Ejecutados y eventos PreviewExecuted
- 30. JVM consume todos los CPU, la mayoría de los hilos BLOQUEADOS. ¿Error de JVM?
Pueden compartir dlls, e incluso clases compiladas (dependiendo de la implementación y la configuración). –