2010-02-25 9 views

Respuesta

16

Los subprocesos de Java se pueden implementar de cualquier manera que cumpla con la especificación. La especificación no requiere una implementación específica.

Efectivamente, todas las JVM modernas de escritorio y/o servidor implementan subprocesos Java como subprocesos nativos. Eso significa que hay exactamente 1 subproceso nativo para cada subproceso de Java y que el sistema operativo hace toda la programación, al igual que lo hace para un programa de C, por ejemplo.

Algunas JVM antiguas y posiblemente algunas JVM para dispositivos con recursos limitados pueden implementar subprocesos de forma que el número de subprocesos nativos utilizados sea menor que el número de subprocesos de Java en ejecución (o posiblemente 1). Se dice que esas implementaciones implementan los denominados "hilos verdes". En este caso, la propia JVM es responsable de la conmutación de tareas y la programación, en lugar de delegar esa tarea en el sistema operativo.

+0

¿Alguien me puede dar una referencia para esto? –

+0

@espertus El código fuente de referencia de la implementación HotSpot JVM se puede encontrar en http://openjdk.org –

5

Depende de la implementación de la JVM, por supuesto, pero creo que son lo mismo. Es decir, un hilo en Java se implementa a través de un hilo nativo. Puede esperar/hacer con los subprocesos de Java todo tipo de cosas que pueda con subprocesos nativos.

0

Los subprocesos de Java y los subprocesos nativos son completamente diferentes. El hilo nativo es parte de la plataforma subyacente (el sistema operativo).

Los subprocesos de Java son una de las características del lenguaje Java para admitir la simultaneidad. La especificación Java controla la API y el funcionamiento de los subprocesos de Java. En última instancia, los hilos de Java se correlacionarán con hilos nativos durante la ejecución del programa Java. También es necesario que los subprocesos Java no se mapeen uno a uno con subprocesos nativos.

0

Los subprocesos de Java (clase de Thread y la interfaz de Runnable) son una API de mucho más alto nivel que los subprocesos nativos en las aplicaciones compartidas de memoria. Recomendé este libro "Java Threads" de Oaks y Wong http://shop.oreilly.com/product/9780596007829.do. Es una práctica común implementar la interfaz Runnable, pero depende del alcance del código.