Académique Documents
Professionnel Documents
Culture Documents
Curso: S4A
Los Hilos o los Threads en Java, son basicamente una forma de poder ejecutar varios
procesos simultneamente en nuestros programas en Java.
Para definir e instanciar un nuevo Thread (hilo, proceso) existen 2 formas:
Curso: S4A
Curso: S4A
Una vez que ejecutamos lo anterior nos dar un resultado parecido a lo siguiente:
Comenzado por Luis, i = 0
Comenzado por Luis, i = 1
Comenzado por Luis, i = 2
Comenzado por Carlos, i = 0
Comenzado por Carlos, i = 1
Comenzado por Carlos, i = 2
Comenzado por Mara, i = 0
Comenzado por Mara, i = 1
Comenzado por Mara, i = 2
...o no?, si lo volvemos a ejecutar (al menos en mi mquina) obtengo lo siguiente:
Comenzado por Luis, i = 0
Comenzado por Carlos, i = 0
Comenzado por Luis, i = 1
Comenzado por Carlos, i = 1
Comenzado por Luis, i = 2
Comenzado por Mara, i = 0
Comenzado por Mara, i = 1
Comenzado por Mara, i = 2
Comenzado por Carlos, i = 2
Usualmente para poder utilizarlos tenemos que crear clases que extienden a la clase Thread, y
reescribir el metodo principal run(), el cual es el que se va a ejecutar principalmente al iniciar
un hilo, thread o nuevo proceso en java.
Ejemplo:
Curso: S4A
Interface Runnable
La interface Runnable proporciona un mtodo alternativo a la utilizacin de la clase Thread,
para los casos en los que no es posible hacer que la clase definida extienda la clase Thread.
Esto ocurre cuando dicha clase, que se desea ejecutar en un hilo independiente deba extender
alguna otra clase. Dado que no existe herencia mltiple, la citada clase no puede extender a la
vez la clase Thread y otra ms.
En este caso, la clase debe implantar la interface Runnable, variando ligeramente la forma en
que se crean e inician los nuevos hilos.
Por ltimo se llama al mtodo start de la clase thread. Este mtodo iniciar el nuevo
thread y llamar al mtodo run () de nuestra clase.
Por ltimo, obsrvese la llamada al mtodo getName () desde run (). getName es un
mtodo de la clase Thread, por lo que nuestra clase debe obtener una referencia al
thread propio. Es lo que hace el mtodo esttico currentThread () de la clase Thread.