viernes, 4 de julio de 2014

Modulo 15: Hilos

Se puede crear hilos de dos formas
- Por herencia a través de la clase Thread
- implementando, con la interfaz de Runnable (Recomendable y más usada)


Es dificil ejecutar cuál hilo se ejecuta primero , es decir se necesitan ver el código de la máquina virtual y del SO para saber.

Todos los hilos se crean con una prioridad y se determina con un valor, el cuál no necesariamente necesita que se ejecute primero, la máxima prioridad es 10 y la mínima es 1, y la media es 5 y es por default, AUN CUANDO SE LE ASIGNE UNA PRIORIDAD -NO- Los va a ejecutar primero de acuerdo a la prioridad.

Constructores
Thread()
          Allocates a new Thread object.
Thread(Runnable target)
          Allocates a new Thread object.
Thread(Runnable target, String name)
          Allocates a new Thread object.
Thread(String name)
          Allocates a new Thread object.
información desde: http://docs.oracle.com/javase/6/docs/api/

Métodos
run() -> El código de nuestro hilo
start() -> invoca el código del hilo, es decir ejecuta a run pero lo ejecuta en un nuevo subproceso (Hilo)
stop()

Si te es un objeto de una clase que extiende de Thread y que dicha clase tiene el método hilo.
t.run(); // ejecutaría un método run.
t.star(); // ejecuta el método run, pero como un subproceso

Para un hilo se necesita, debe de tener las tres para tener un hilo
CPU - son las invocaciones de los hilos ua, ua1.
Codigo (todo lo que tengamos en run)
Date


No se debe tener dos start() en un mismo hilo, porque manda un error de inicialización.

Siempre existe al menos un hilo el del main

Los hilos se lanzan casi al mismo tiempo, la máquina virtual y el SO lo definen, solo que hay que tener cuidado.
Ejemplo de dos personas que quieren con dos tarjetas en diferentes tarjetas y diferente cajero utilizan su tarjeta 

join(): lo que hace es decir espera a que termine el hilo que se esta ejecutando, se lo dice al que quiere entrar.

otra manera de obtener los mismo, es usar el método para sincronizar