8/17/2019 Manejo de Hilos
1/15
8/17/2019 Manejo de Hilos
2/15
4na vez definida la clase de nuestro hilo de"eremos instanciarlo 5 ejecutarlo de lasiguiente forma#
hread t 6 ne7 Ejemplo$ilo&'8t.start&'
U h!lo "asar# "or $ar!os es%a&os &ura%e su c!clo &e $!&a'
0 hread t 6 ne7 hread&this'84na vez se ha instanciado el o"jeto del hilo, diremos que está en estado de Nuevohilo.0 t.start&'8(uando invoquemos su m%todo start&' el hilo pasará a ser un hilo vivo,comenzándose a ejecutar su m%todo run&'. 4na vez ha5a salido de este m%todopasará a ser un hilo muerto.9a :nica forma de parar un hilo es hacer que salga del m%todo run&' de formanatural. !odremos conseguir esto haciendo que se cumpla una condición de salidade run&' &lógicamente, la condición que se nos ocurra dependerá del tipo deprograma que estemos haciendo'. 9as funciones para parar, pausar 5 reanudar hilos están desapro"adas en las versiones actuales de Java.;ientras el hilo est% vivo, podrá encontrarse en dos estados# Ejecutable 5 Noejecutable. El hilo pasará de Ejecutable a No ejecutable en los siguientes casos# (uando se encuentre dormido por ha"erse llamado al m%todo sleep&',permanecerá No ejecutable hasta ha"er transcurrido el n:mero de milisegundosespecificados.
(uando se encuentre "loqueado en una llamada alm%todo 7ait&' esperando que otro hilo lo des"loquee llamandoa notify() o notifyAll(). e&' + ?ait until message is availa"le. 7hile &empt5' + tr5 + 7ait&'8 - catch &@nterruptedException e' +-
8/17/2019 Manejo de Hilos
3/15
- oggle status. empt5 6 true8 otif5 producer that status has changed.
notif5All&'8 return message8 - pu"lic s5nchronized void put&=tring message' + ?ait until message has "een retrieved. 7hile &Bempt5' + tr5 +
7ait&'8 - catch &@nterruptedException e' +- - oggle status. empt5 6 false8 =tore message. this.message 6 message8 otif5 consumer that status has changed. notif5All&'8 --
El "ro&uc%or:
import java.util.)andom8pu"lic class !roducer implements )unna"le + private *rop drop8
pu"lic !roducer&*rop drop' + this.drop 6 drop8 - pu"lic void run&' + =tring important@nfoCD 6 + ;ares eat oats, *oes eat oats, 9ittle lam"s eat iv5, A >id 7ill eat iv5 too -8 )andom random 6 ne7 )andom&'8 for &int i 6 18 i [email protected] iGG' + drop.put&important@nfoCiD'8
8/17/2019 Manejo de Hilos
4/15
tr5 + hread.sleep&random.next@nt&2111''8 - catch &@nterruptedException e' +- - drop.put&*HE'8
--
Cosu(!&or:
import java.util.)andom8pu"lic class (onsumer implements )unna"le + private *rop drop8 pu"lic (onsumer&*rop drop' + this.drop 6 drop8 -
pu"lic void run&' + )andom random 6 ne7 )andom&'8 for &=tring message 6 drop.ta>e&'8 B message.equals&*HE'8 message 6 drop.ta>e&'' + =5stem.out.format&;E==AIE )E(E@
8/17/2019 Manejo de Hilos
5/15
FIRMA INTEGRANTES
MMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMM
UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE INGENIERÍA, CIENCIAS FÍSICAS Y MATEMÁTICA
CARRERA DE INGENIERÍA INFORMÁTICA
PROGRAMACIÓN II INFORME DE PROGRAMACION II
ESTUDIANTES: Stalin Mora DOCENTE: Mauro Rosas
Eduardo Benavides
Edison Caiza
SEMESTRE: / Paralelo: 0 FECHA: ! de julio de "!#
TEMA: @FH);E *E ;AEJH *E EL(E!(@HE=
MARCO TEÓRICOJava incorpora en el lenguaje el manejo de errores en, tiempo de ejecución&división por cero, Kndice fuera de lKmites, fichero que no existe...' .Tolerac!a a)allos.Estos errores reci"en el nom"re de e*ce"c!oes si no se gestiona unaexcepción, se termina la ejecución del programa con un mensaje de error.!rogramar manejando excepciones hace que se separen el código de la tarea arealizar 5 el código de control de errores
E+e("lo ,
pac>age tr508
8/17/2019 Manejo de Hilos
6/15
pu"lic class r50 +
pu"lic static void main&=tringCD args' +
int CD arra5 6 ne7 intC1D8
arra5CNOD 6 P8 - -
En este ejemplo vemos cómo se maneja la excepción de un error al
intentar acceder a un vector fuera de sus lKmites.
E+ecuc!-
E$ce%tion in thread &main& java'lan'Arraynde$*ut*fBoundsE$ce%tion+ ,-
at try'.ry'main(.ry'java+)/ava Result+
El error está en la lKnea 00 donde nos indica la clase de error 5 la excepción
E+e("lo .
pac>age tr58
pu"lic class r5 +
pu"lic static void main&=tringCD args' +
int CD arra5 6 ne7 intC1D8
tr5
+
arra5CNOD 6 P8
-
catch&Arra5@ndexHutHfQoundsException excepcion'
+
=5stem.out.println& Error de Kndice en un arra5'8
-
8/17/2019 Manejo de Hilos
7/15
-
-
AquK gestionamos excepciones, se coloca el código que puede causarlas dentro
de la cláusula %r/ 5 tantas clausulas ca%ch como posi"les excepciones ha5a.
=e usa de la siguiente manera#
=intaxis
E+e("lo 0pac>age tr5O8
pu"lic class r5O +
pu"lic static void main&=tringCD args' +
int CD arra5 6 ne7 intC1D8
tr5
+
arra5CNOD 6 P8
int " 6 18
int a 6 O"8
-
8/17/2019 Manejo de Hilos
8/15
catch&Arra5@ndexHutHfQoundsException excepcion'
+
=5stem.out.println& Error de Kndice en un arra5'8
-
catch&ArithmeticException excepcion'
+
=5stem.out.println& Error de Kndice en un arra5'8
-
-
-
En este ejemplo vemos el manejo de excepciones Arra5@ndexHutHfQoundsException, ArithmeticException, el primero de"ido al error
del ejemplo 0 5 el segundo a un error aritm%tico de un n:mero dividido para cero.
E+e("lo 1
pac>age tr5P8
pu"lic class r5P +
pu"lic static void main&=tringCD args' +
int CD arra5 6 ne7 intC1D8
tr5
+
arra5CNOD 6 P8
R int " 6 18
int a 6 O"8
R
=tring s 6 null8
8/17/2019 Manejo de Hilos
9/15
s.equals&SSSS'8
-
catch&Arra5@ndexHutHfQoundsException excepcion'
+
=5stem.out.println& Error de Kndice en un arra5'8
-
catch&ArithmeticException excepcion'
+
=5stem.out.println& Error de Kndice en un arra5'8
-
catch&Exception excepcion'
+
=5stem.out.println&=e ha generado un error que no es de Kndices, ni Aritm%tico'8
=5stem.out.println&El o"jeto error es de tipo G excepcion'8
-
-
-
E+ecuc!-Se ha enerado un error 0ue no es de 1ndices2 ni Aritm3ticoEl objeto error es de ti%o java'lan'Null4ointerE$ce%tion
En este ejemplo o"servamos como las excepciones cumplen un orden dentro delcódigo. Este orden del catch es desde arri"a a"ajo.
=e comprue"a el tipo del error con el del argumento del primer catch, luego con el
del segundo, $asta que uno de los catch tenga el mismo tipo 5 pueda gestionarlo.
!or ello el catch de la clase "ase de"e de ser el :ltimo, 5 los de las clases
derivadas de"en de estar antes.
8/17/2019 Manejo de Hilos
10/15
Vea(os la "ro"a2ac!- &e e*ce"c!oes'
E+e("lo 3
pac>age tr528
pu"lic class r52 +
pu"lic static void main&=tringCD args' +
tr5
+
Exception e 6 ne7 Exception&Este es mi propio error.'8
thro7 e8
-
catch&Exception excepcion'
+
excepcion.print=tac>race&'8
-
-
8/17/2019 Manejo de Hilos
11/15
-
E+ecuc!-
java'lan'E$ce%tion+ Este es mi %ro%io error'
at try#'.ry#'main(.ry#'java+")
En este ejemplo vemos una nueva sentencia %hro4'
Esta excepción especKfica en el ejemplo se declara con la letra e el cual muestranuestro mensaje personalizado de excepción.
E+e("lo 5
pac>age tr5T8
pu"lic class r5T +
pu"lic static void main&=tringCD args' +
tr5
+
;i!ropioError e 6 ne7 ;i!ropioError&Este es mi propio error.'8
thro7 e8
-
catch&Exception excepcion'
+
excepcion.print=tac>race&'8
-
8/17/2019 Manejo de Hilos
12/15
-
-
class ;i!ropioError extends Exception+
pu"lic ;i!ropioError&=tring mensaje'+
super&mensaje'8
-
-
E+ecuc!-
try5'Mi4ro%ioError+ Este es mi %ro%io error'
at try5'.ry5'main(.ry5'java+")
En este ejemplo vemos una clase ;i!ropioError heredada de la clase Exception.
Este tipo de excepciones son definidas por el usuario. Estas excepciones se
de"en de lanzar con la sentencia %hro4'
E+e("lo 6
pac>age tr538
pu"lic class r53 +
pu"lic static void main&=tringCD args' +
tr5
+
Exception e 6 ne7 Exception&Este es mi propio error.'8
thro7 e8
8/17/2019 Manejo de Hilos
13/15
-
catch&Exception excepcion'
+
excepcion.print=tac>race&'8
-
finall5
+
=5stem.out.println&=e ejecuta finall5'8
-
-
-
E+ecuc!-
java'lan'E$ce%tion+ Este es mi %ro%io error'
Se ejecuta finally
at try6'.ry6'main(.ry6'java+")
En este ejemplo o"servamos una nueva cláusula que es )!all/ el cual sirve paraque un código despu%s de esta cláusula se ejecute al final.
iene la siguiente sintaxis#
8/17/2019 Manejo de Hilos
14/15
CONCLUSIONES
• enemos varias formas de controlar un error para que el programa no se
corte 5 salga del mismo el cual es mu5 fácil dándonos cuenta del error caso
contrario sufrirKamos al momento de ejecutar un programa.
• (omprendimos la utilización de una forma de excepción que es definida por
el usuario donde define el pro"lema 5 como corregirlo si lo escri"imos
dentro del programa el cual facilita al usuario que no de"e hacer para q no
se corte el programa.
RECOMENDACIONES
• (onocer exactamente cuál es el error para darle la mejor manera de
excepción 5 no produzca pro"lemas a futuro.
• 9a "uena utilización de la excepción con la sentencia thro7 para mejor
eficacia al momento de comunicar un error.
7I7LIOGRAFIA
https#drive.google.comfiled1QUljV0n3>1(d0J0=ExscE;5)zgvie7Wpli60
https#drive.google.comfiled1QUljV0n3>1("?F!e$QHH$h
8/17/2019 Manejo de Hilos
15/15
MMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMM
Top Related