Manejo de Hilos

download Manejo de Hilos

of 15

Transcript of Manejo de Hilos

  • 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