sábado, 1 de septiembre de 2007

Thread Java

Leyendo un Articulo "Concurrencia JVM", me entero de cosas interesante que sucenden en los diferentes sistemas operativos(Linux, Solaris y Windows, estos son los que menciona el articulo) en los que se puede ejecutar la JVM de JAVA con respecto al manejo de Threads.

Por ejemplo que en windows aunque los threads tengan diferente prioridad, se ejecutan en el scheduler de windows con la misma prioridad, cosa que no sucede así en Linux y Solaris, tambien que existen diferentes tipos de Threads (Green Threads y Native Threads) y cada uno de estos tiene comportamientos diferentes y hace uso de librerias y técnicas diferentes.

A continuación les pongo un resumen de los Threads Soportados por JAVA y su JVM.

Green Threads
La ejecución de la aplicación se comporta como es de esperar, es decir, según la especificación de Java, los threads de Java se planifican mediante un algoritmo de scheduling por prioridades y preemptivo. Así pues, primero se ejecutará el thread más prioritario y por último el de menos prioridad. Tanto Green Threads para Linux o para Solaris se comportan idénticamente.

Linux Native Threads
El resultado nada tiene que ver con la ejecución teórica (según la especificación de Java). Es debido, principalmente a la política de planificación elegida (SCHED_OTHER) de los POSIX Threads en Linux. La prioridad de los Java threads no se tiene en cuenta siendo siempre 0, dejando al scheduler del kernel planificarlos en función de la prioridad dinámica (time-sharing). Por otro lado, la ejecución sobre una arquitectura Itanium (IA64, con una versión diferente de JVM) muestra un comportamiento totalmente diferente, siguiendo un scheduling FIFO.

Solaris Native Threads
En este caso, la ejecución se comporta idénticamente a la acaecida sobre la plataforma Linux Itanium (scheduling FIFO). Aparentemente la ejecución debería comportarse como la especificación de Java, pues la relación de prioridades y el algoritmo de scheduling es el correcto, pero en este caso los resultados no acompañan a la teoría.

Win32 Native Threads
La aplicación, al ejecutarse en esta plataforma se comporta como el código fuente nos ha mostrado: dos threads de Java con diferente prioridad se comportan, gracias al scheduler de Win32, como si tuvieran la misma prioridad.

Descargar Articulo Completo.
Link directo, Haber si funciona.

Hacer Click en donde aparesca Download Ready,

No hay comentarios: