You are on page 1of 5

V.

Desarrollo de aplicaciones con manejo de


proceso simultneo y uso de mens
Un ejemplo
Primer ejemplo
public class Hilos1{
public static void main(String[] args){
Hilo1 h1 = ne Hilo1(!Uno!)"
Hilo1 h# = ne Hilo1(!$os!)"
h1%start()" h#%start()"
&
&
class Hilo1 e'tends (hread{
String s"
public Hilo1(String s){
this%s = s"
&
public void run(){
)or(int i=*" i+1*" i,,){
S-stem%out%println(s,! !,i)"
tr-{
sleep(.ath%round(.ath%random()/1***))"
&catch(0nterrupted1'ception e){&
&
&
&
En este programa, tenemos definidas dos clases, la clase Hilos1 que es la clase principal, la
cual va a crear en este caso dos hilos que arrancarn su ejecucin y la clase Hilo1 que es
donde programaremos el hilo a ejecutar, como puedes ver la ejecucin de la clase Hilo1
e!tiende a "hread, como e!tiende a "hread, automticamente hereda el m#todo run pero
como sa$emos el m#todo run no hace nada, ah% es donde nosotros programamos lo que
queremos que se ejecute en un hilo.
El constructor de Hilo1 reci$e como parmetro un string que nos va a servir para identificar
que hilo se est ejecutando. &hora veamos la programacin de run, es simplemente un ciclo
)or que mediante una varia$le de control i, se ejecutar 1' veces( dentro de su ejecucin
simplemente va a imprimir el string que le mandamos de parmetro al constructor y despu#s
el valor de la varia$le i, inmediatamente despu#s de ha$er ejecutado la impresin en
pantalla, vamos a poner al hilo a dormir, esto lo hacemos con el m#todo sleep, si anali)as el
parmetro de sleep que tiene que ser un valor de tipo long realmente es un nmero aleatorio
entre ' y 1 multiplicado por 1''', *que quiere decir esto+ ,ue el hilo se ir a dormir por una
fraccin de un segundo, el valor de esta fraccin ser aleatorio.
&lgo importante que puedes ver es que sleep est dentro de un $loque try-catch porque as%
lo requiere la clase "hread o mejor dicho el m#todo sleep de la clase "hread, este m#todo
sleep arroja la interrupcin 0nterrupted1'ception la cual tienes que atrapar cuando utili)as
sleep.
Entonces como vemos la clase Hilo1 simplemente ejecutar un ciclo durante 1' veces y
dentro de ese ciclo imprimir un letrero y dejar de competir por el ./0 por una fraccin de
segundo.
&hora vamos a la clase principal Hilos 1, aqu% como puedes ver estamos creando dos
ejemplares 1o$jetos2 o dos instancias de la clase Hilos1, a la primera le mandamos el
parmetro string "Uno" y a la segunda el parmetro string "Dos", el hecho de crear dos
instancias no es todo, adems de$emos de arrancar los hilos, y esto se hace mandando
ejecutar el m#todo run, pero como ya vimos el m#todo run no se ejecuta directamente,
tienes que llamar a start que son las dos ltimas instrucciones del m#todo main, cuando ves
h1.sart12 y h3.sart12 en ese momento comien)a la ejecucin de dos hilos, t#cnicamente lo
que comien)a es una competencia por el ./0. En la parte inferior de la filmina puedes ver la
salida de una de tantas ejecuciones de este programa, como puedes ver no hay un orden en
el cual se ejecutan los hilos, am$os estn compitiendo por el ./0 o estn en estado
detenidos por la llamada sleep o un tiempo aleatorio.
1l mismo ejemplo2 pero implementando 3unnable

public class Hilos#{
public static void main(String[] args){
Hilo1 h1 = ne Hilo1(!Uno!)"
Hilo1 h# = ne Hilo1(!$os!)"
(hread t1 = ne (hread(h1)"
(hread t# = ne (hread(h#)"
t1%start()"
t#%start()"
&
&
class Hilo1 implements 3unnable{
String s"
public Hilo1(String s){
this%s = s"
&

You might also like