Bienvenidos.
Comenzamos con el primer ejemplo de los hilos de Rodrigo, así que íbamos a cerrar el ejemplo que tenemos,
cerramos y vamos a crear un nuevo proyecto.
Igual que siempre New Project.
En yaba siguiente siguiente y el nombre y los o adrid como le queramos colocar, finalizar.
Bien, como siempre, vamos a crear un pacato para organizar New Package.
OR junto a Guzmán punto y los ejemplo ejemplos finalizar bien, acá vamos a tener la clase con el método
Main para probar el hilo le vamos a colocar ejemplo extender.
Bueno, extender, porque vamos a ver primero cómo crear un tried heredando de la clase, deride entonces
siguiente.
Por acá tenemos el método main porque recuerden que hay dos forma 1 heredar de Dredd la clase otro implementa
la interfaz Rond abre bien.
Vamos a crear entonces la clase de herid que hereda de dirigo, pero para que quede mejor la podríamos
crear en un package.
Entonces por acá New Package Utility.
Perfecto, vamos a crear esta clase.
Le vamos a llamar por ejemplo nombre Dredd.
Bueno, como nomenclatura para nombrar la clase adrid podría llevar la palabra adrid después del nombre
que le queramos dar.
Ahora no es un estándar, pero sí para detectar visualmente que se trata de una clase débil.
Nada más.
Listo.
Stents.
Drizzt Dredd de llevarla.
Por lo tanto, no se tienen que importar en el РАМКАХ por defecto de yaba.
Bien.
Y acá tenemos que sobrescribir el método rrán.
Entonces en Generated nos vamos overo hay métodos sobrescribir.
Buscamos el Rann.
Ok.
Llega.
Implementamos el cuerpo.
Esto acá le quitamos.
Opcionalmente le podemos dar un nombre al Dredd personalizar.
Pero para eso tenemos que sobrescribir el constructor.
Por ejemplo.
Nos vamos también a generate constructor.
Buscamos uno que reciba el nombre, el string ok y listo.
Entonces es importante heredar de Grid opcionalmente implementar un constructor para dar un nombre,
personalizar el nombre en caso de que le creamos dar un nombre propio.
Aunque también podríamos utilizar el nombre por defecto que se le asigna.
Y el método Rrán acá va a tener un principio y final.
Es decir, recuerden que cuando parte el Rann comienza el hilo y cuando finaliza, es decir, se sale
el metro Herrán termina la ejecución del hilo.
Entonces por ejemplo, acá podemos tener shout.
Y acá podemos concatenar con el nombre.
Acá tienen método Kenney.
Y de esa forma podemos obtener siempre en nombre del Dr. Acá.
Bueno, otro más donde finaliza el try y entremedio alguna tarea, lo que queramos.
Haga un proceso para el ejemplo.
Voy a hacer un for para simular alguna tarea de uno hasta 9.
Es decir, que partan cero hasta diez y que muestren nombre diez veces.
Entonces le dije que imprima en nombre diez puntos Quiet noi se fijan bien simple nuestra implementación.
Ahora vamos a ir a la clase con el método Main.
Vamos a crear la instancia Dredd del tipo adrid hilo igual new nombre Drin.
Por ejemplo, le podríamos colocar John Dondo Shout y punto.
Get State.
Vamos a.
Recuerden que cuando se crea la instancia es un hilo nuevo que todavía no se ha ejecutado.
Entonces vamos a levantar.
Debía mostrar new.
Perfecto es el estado del ciclo hoy día, cuando se crea instancia, pero todavía nos asigna recursos.
Todavía no se ejecuta Eldred.
Entonces ahora vamos a ejecutar el Dredd por acá y punto Start.
Recuerden que se levanta con el start, no con el run.
El start internamente invoca y llama al run.
Vamos a ver.
Jondo diez veces y final y salir.
Y acá aparece el ran.
Pero se fija la secuencia primero se levanta, imprime el estado rana hiver y como traca forma síncrona,
es decir, en su propio hilo.
O ir que su propio proceso.
Pero dentro del proceso principal del método main de nuestra aplicación, entonces se corre en paralelo.
Entonce primero muestra otro nivel mientras ejecuta, mientras ejecuta y empieza a imprimir los nombres
hasta que finaliza el hilo.
Bueno, y por supuesto, si damos un Dilthey una espera en el tiempo, el estado base que ha finalizado,
termínate.
Y esto lo podemos hacer con un sleep del dret principal.
Claro, porque se coloca adrid punto sleep.
Después vamos a Heyman detalle, pero por ahora solamente puede ser una pausa, no sé, de 50 o 100
milisegundos.
Con eso está bien.
Vamos a lanzar la excepción por el método de que nos pide manejar intranets Deception.
Bueno, lo que hace acá es ejecutar el hilo.
Por lo tanto se ejecuta, se procesa, hace una pausa mientras está ejecutando.
Y después, cuando supuestamente finaliza adrid después de 100 milisegundos se imprime, el estado debería
cambiar y debería aparecer acá abajo.
Veamos.
Se fijan termínate porque le dimos una pausa.
Si le damos una pausa de 10 también va a depender quizá donde quiere.
Vamos a ver también Di1 1.
De 3.
De dos, entonces entre uno y dos se ejecuta, es muy rápido.
Está hablando de milésimas de segundos, se fijan bastante, bastante rápido.
Bien, esto lo voy a comentar directamente para demostrar cómo varía si colocamos una pequeña pausa
al hilo principal del main.
Esto no es una pausa del hilo de Taka, no, sino es una pausa en el método Main.
Qué otra cosa podemos ver ahora?
Qué pasa si tenemos más instancia?
Por ejemplo, acá tenemos Allon, pero podríamos crear más objeto.
drId y lo dos igual New Nombre drid María.
Hilo dos, punto start.
Vamos a ver que sucede.
Bueno, es tan rápido porque son milésimas segundo que es muy probable que primero se ejecute este y
prácticamente cuando haya finalizado se ejecuta este, pero prácticamente parten al mismo tiempo.
Pero como son milésimas de segundo decir muy rápido, entonces visualmente es como si no fuera en paralelo.
Se fijan jondo y después uno finaliza, se inicia María.
Pareciera ser que no fuera en paralelo, pero sí lo es.
Estamos hablando de tiempos, unidad, de tiempos, de milésimas de fracciones de segundo incluso.
Eso sí que si lo podemos notar con una pausa acá.
Por ejemplo, si tomamos una pausa entre medio del foro en cada iteración antes de imprimir, es tener
una pausa ya del nombre dirig de este hilo.
Punto Sleep.
No sé, por ejemplo, de 10.
Hay que lanzar acá la acepción o anidar.
La manejamos con el troi catch.
Esto de acá alojamos acá o bien acá entre medio para el caso, lo mismo vamos a probar.
Se fijan, ahí se van intercalando prácticamente jondo María María, Jondo María, porque en una pausa,
como tentemos un poco mal tiempo, claro, se empieza a notar más visualmente la concurrencia, aunque
cada uno de estos dos hilos, cada uno corre en su propio procesador de forma paralela.
Ahora recuerden con procesadores de hoy en día que son de más de un core de 4 cor 8 kor.
Esto es prácticamente en paralelo.
No es que estemos trabajando con un solo core y se va ejecutando de forma intermitente una y después
otra y después otra no, sino en paralelo.
Y también para finalizar drid y los tres igual new nombre.
Bueno, acá podemos utilizar el tipo de la clase Drizzt Padre o el mismo tipo de la implementación.
En el caso del Drin, Pepe, el Start y los tres punto Start.
Eita.
Parte primero incluso María, luego Pepe y yo, entonces literalmente concurrente al mismo tiempo.
Y eso podría variar.
Probablemente si lo ejecutamos nuevamente varía el orden.
Se fijan ahora e Yondu, María y Pepe.
Si volvemos a ejecutar, podría variar.
Es decir, obviamente nos asegura, porque esto lo maneja el procesador.
El sistema operativo y la máquina virtual de Java.
Bueno, esto sería con una primera vista de los Drizzt utilizando la herencia y continuamos la siguiente
clase con la forma de la interfaz Ranavalona.
Nada más.
Nos vemos.