Chicos he iniciado recientemente la programación multhreaded con Java en el caso de hilos de Linux, sé que el kernel los programa (ya que son las unidades de unidades que están programadas) pero los programas de Java se ejecutan en JVM que en mi sistema (RHEL 6.1) se implementa como un programa que se ejecuta como una instancia de espacio de usuario. Así que, sin que el kernel tenga conocimiento de los hilos java, ¿cómo es posible que la multitarea preventiva se realice en JVM? será útil si todo el mecanismo de interacción JVM y el núcleo al hacer esto se da del PLZ citar las posibles fuentes de información¿Cómo están programados los hilos java?
Respuesta
Leer Distinguish Java threads and OS threads? Como dije en los hilos de comentarios de Java son hebras de SO ordinarios simplemente ejecutar código JVM
Sí, lo entiendo, pero por favor dígame cómo se hace la interpretación del código Java por el intérprete JVM en este entorno multiproceso – Tanay
Excepto por las acciones de sincronización, cada hilo interpreta el código Java de forma independiente si fue el único hilo. Cuando se crea un nuevo hilo, se le dice qué código de Java interpretar. –
El jvm es solo un proceso normal que comienza con un hilo y puede engendrar tantos hilos como quiera después. La programación se realiza en dos niveles: entre procesos y entre subprocesos dentro de procesos. Todo esto lo hace el SO (a través de libs): el jvm simplemente se conecta. Google posix threads para más detalles: eso está expuesto (API) al jvm.
Esto va un poco más en detalles: http://www.ibm.com/developerworks/java/library/j-rtj3/
Temas en los mapas de procesos java/JVM a un hilo nativa y se puede ver tanto el ID del tema Java y el ID del tema nativo en un vertedero de seguimiento de la pila hilo. Obtener la pila de subprocesos de todos los hilos de Java utilizando su herramienta favorita:
señal de línea- comando como CTRL + INTER (Windows) o ctrl + \ Linux) en la consola donde el programa Java se ejecuta
- herramienta de línea de comandos (matar -QUIT o jstack de la JDK)
- vm visual en el JDK y/o jmx etc
Ejemplo extracto de la primera línea de un vertedero de tal hilo: ... tid = 0x0000002adaba9c00 nid = 0x754c ...
tid = java hilo Identificación
nid = id nativo (el ID del tema OS)
Usar las herramientas del sistema operativo para obtener más información sobre el hilo con el id nativa (se está en hexadecimal).
Dentro del código de Java que tiene ThreadMXBean para recuperar más información hilo programáticamente si quieres http://docs.oracle.com/javase/6/docs/api/java/lang/management/ThreadMXBean.html
", pero los programas de Java se ejecutan en la JVM que en mi sistema (RHEL 6.1) es implementado como un programa que se ejecuta como un espacio de usuario instance.So, sin el kernel siendo conscientes de las hebras Java ..."
Esta afirmación es incorrecta para todos los modernos JVM que utilizan subprocesos nativos. Creo que ese ha sido el valor predeterminado desde Java 1.2. La implementación nativa de subprocesos mediante una JVM significa que cada vez que un subproceso crea una instancia/ejecuta un subproceso en el código de Java, la JVM solicita al SO que cree el subproceso. Como estos son hilos nativos, el kernel los conoce y los trata en consecuencia.Además, Linux admite/implementa subprocesos POSIX y, como tal, en sistemas basados en Linux obtendrá un comportamiento pthread para los subprocesos de sus aplicaciones Java
- 1. Excepciones no controladas con ejecutores programados Java
- 2. Hilos Java vs Hilos OS
- 3. reutilización de hilos java
- 4. C3P0 aparente interbloqueo cuando los hilos están todos vacíos?
- 5. ¿Manera correcta de verificar si los hilos están hechos?
- 6. Cómo parar los trabajos programados usando tarea de primavera
- 7. ¿Cómo se representarían los eventos programados en un RDBMS?
- 8. ¿Cómo correlaciona Sun JVM los hilos de Java con los hilos de Windows?
- 9. ¿Cómo newCachedThreadPool reutiliza los hilos?
- 10. ¿Debo manualmente detener los hilos en Java?
- 11. Los hilos java se eliminan cuando terminan
- 12. ¿Hilos dentro de hilos en Java?
- 13. Cómo aprender acerca de los hilos, especialmente en Java
- 14. Hilos en Java
- 15. ¿Cómo aborta AppDomain.Unload() los hilos?
- 16. sincronización de hilos java
- 17. Métodos Java Ejecutando en hilos
- 18. hilos Tomcat Java vs roscas
- 19. ¿Cómo están los códigos chinos?
- 20. hilos de java en libGDX
- 21. Pequeño proyecto para aprender los hilos de Java
- 22. Java Swingworker y múltiples hilos
- 23. ¿Cómo hacen frente los sistemas con hilos a los datos compartidos que están siendo almacenados en caché por diferentes CPU?
- 24. Java hilos y basura colector
- 25. excepciones de hilos de java
- 26. Cómo anular los hilos creados con ThreadPool.QueueUserWorkItem
- 27. ¿cómo se comunican los hilos entre sí?
- 28. ¿Cómo comienzo los hilos en C simple?
- 29. ¿Cómo puedo acelerar los hilos de Python?
- 30. Multicore + Hyperthreading: ¿cómo se distribuyen los hilos?
No estoy seguro, pero cada subproceso Java es manejado por una secuencia de sistema operativo dedicada. Por lo tanto, su sistema operativo no necesita conocer JVM, etc. –