SlideShare una empresa de Scribd logo
1 de 39
Multitarea e Hilos en Java
Multitarea e Hilos en Java
En esta entrada vamos a ver las diferentes
maneras de como trabajar con Threads en Java
(o hilos en español).
En esencia la multitarea nos permite ejecutar
varios procesos a la vez; es decir, de forma
concurrente y por tanto eso nos permite hacer
programas que se ejecuten en menor tiempo y
Multitarea e Hilos en Java
Multitarea e Hilos en Java
Si en vez de hacerlo de forma secuencial, lo
hiciéramos con 4 hilos, el programa tardaría en
ejecutarse solo 20 segundos, es decir el tiempo
que tardaría en ejecutarse el proceso más largo.
Esto evidentemente sería lo ideal, pero la realidad
es que no todo se puede paralelizar y hay que
saber el número de procesos en paralelo que
podemos lanzar de forma eficiente. En principio
Multitarea e Hilos en Java
Multitarea e Hilos en Java
En Java para utilizar la multitarea debemos de
usar la clase Thread (es decir que la clase que
implementemos debe heredar de la clase Thread)
y la clase Thread implementa la Interface
Runnable. En el siguiente diagrama de clase
mostramos la Interface Runnable y la clase
Thread con sus principales métodos:
Multitarea e Hilos en Java
Multitarea e Hilos en Java
En esta entrada no vamos a ver como utilizar
todos los métodos de la clase Thread, pero se
muestran para que entiendas de que existen y a
parte por su nombre se puede intuir su
funcionalidad.
En esta entrada vamos a poner un ejemplo para
Multitarea e Hilos en Java
En este ejemplo vamos a simular el proceso de
cobro de un supermercado; es decir, unos clientes
van con un carro lleno de productos y una cajera
les cobra los productos, pasándolos uno a uno
por el escaner de la caja registradora. En este
caso la cajera debe de procesar la compra cliente
a cliente, es decir que primero le cobra al cliente
1, luego al cliente 2 y así sucesivamente.
Multitarea e Hilos en Java
Para ello vamos a definir una clase “Cajera” y una
clase “Cliente” el cual tendrá un “array de enteros”
que representaran los productos que ha
comprado y el tiempo que la cajera tardará en
pasar el producto por el escaner; es decir, que si
tenemos un array con [1,3,5] significará que el
cliente ha comprado 3 productos y que la cajera
tardara en procesar el producto 1 ‘1 segundo’, el
Multitarea e Hilos en Java
Explicado este ejemplo vamos a ver como hemos
definido estas clases:
Clase “Cajera.java“:
Multitarea e Hilos en Java
Multitarea e Hilos en Java
Clase “Cliente.java“:
Multitarea e Hilos en Java
Multitarea e Hilos en Java
Si ejecutásemos este programa propuesto con
dos Clientes y con un solo proceso (que es lo que
se suele hacer normalmente), se procesaría
primero la compra del Cliente 1 y después la del
Cliente 2, con lo cual se tardará el tiempo del
Cliente 1 + Cliente 2.
Multitarea e Hilos en Java
A continuación vamos a ver como programamos
el método Main para lanzar el programa.
CUIDADO: Aunque hayamos puesto dos objetos
de la clase Cajera (cajera1 y cajera2) no significa
que tengamos dos cajeras independientes, lo que
estamos diciendo es que dentro del mismo hilo se
ejecute primero los métodos de la cajera1 y
después los métodos de la cajera2, por tanto a
Multitarea e Hilos en Java
Clase “Main.java“:
Multitarea e Hilos en Java
Multitarea e Hilos en Java
Si ejecutamos este código tendremos lo siguiente:
Multitarea e Hilos en Java
Como vemos se procesa primero la compra del
cliente 1 y después la compra del cliente 2
tardando en procesar ambas compras un
tiempo de 26 segundos.
Multitarea e Hilos en Java
¿Y si en vez de procesar primero un cliente y
después otro, procesásemos los dos a la vez?,
¿Cuanto tardaría el programa en ejecutarse?.
Pues bien si en vez de haber solo una Cajera
(es decir un solo hilo), hubiese dos Cajeras (es
decir dos hilos o threads) podríamos procesar
los dos clientes a la vez y tardar menos tiempo
en ejecutarse el programa.
Multitarea e Hilos en Java
Para ello debemos de modificar la clase
“Cajera.java” y hacer que esta clase herede de
la clase Thread para heredar y sobre-escribir
algunos de sus métodos. Primero vamos a ver
como codificamos esta nueva clase
“CajeraThread.java” y después explicamos sus
características
Multitarea e Hilos en Java
Multitarea e Hilos en Java
Multitarea e Hilos en Java
Lo primero que vemos y que ya hemos
comentado es que la clase “CajeraThread” debe
de heredar de la clase Thread: “extendsThread“.
Multitarea e Hilos en Java
Otra cosa importante que vemos es que hemos
sobre-escrito el método “run()” (de ahi la
etiqueta @Override) . Este método es
imprescindibles sobre-escribirlo (ya que es un
método que esta en la clase Runnable y la clase
Thread Implementa esa Interface) porque en él
se va a codificar la funcionalidad que se ha de
ejecutar en un hilo; es decir, que lo que se
Multitarea e Hilos en Java
En esta clase “CajeraThread” se pueden sobre-
escribir más métodos para que hagan acciones
sobre el hilo o thread como por ejemplo, parar el
thread, ponerlo en reposos, etc. A continuación
vamos a ver como programamos el método
Main para que procese a los clientes de forma
paralela y ver como se tarda menos en procesar
todo. El método Main esta en la clase
Multitarea e Hilos en Java
Multitarea e Hilos en Java
Ahora vamos a ver cual sería el resultado de esta
ejecución y vamos a comprobar como
efectivamente el programa se ejecuta de forma
paralela y tarda solo 15 segundos en terminar
su ejecución:
Multitarea e Hilos en Java
Multitarea e Hilos en Java
En este ejemplo vemos como el efecto es como
si dos cajeras procesasen la compra de los
clientes de forma paralela sin que el resultado
de la aplicación sufra ninguna variación en su
resultado final, que es el de procesar todas las
compras de los clientes de forma independiente.
De forma gráfica vemos que el programa ha
realizado lo siguiente en dos hilos distintos:
Multitarea e Hilos en Java
Multitarea e Hilos en Java
Otra forma de hacer lo mismo pero sin heredar
de la clase “Thread” es implementar la Interface
“Runnable”. En este caso no dispondremos ni
podremos sobre-escribir los métodos de la clase
Thread ya que no la vamos a utilizar y solo
vamos a tener que sobre-escribir el método
“run()“.
Multitarea e Hilos en Java
En este caso solo será necesario implementar el
método “run()” para que los procesos
implementados en ese método se ejecuten en
un hilo diferente. Vamos a ver un ejemplo de
como utilizando objetos de las clases
“Cliente.java” y “Cajera.java” podemos
implementar la multitarea en la misma clase
donde se llama al método Main de la aplicación.
Multitarea e Hilos en Java
Multitarea e Hilos en Java
En este caso implementamos el método “run()”
dentro de la misma clase donde se encuentra el
método Main, y en el llamamos al método de
“procesarCompra()” de la clase Cajera. Dentro
del método Main, nos creamos dos objetos de la
misma clase en la que estamos (“new
MainRunnable”) y nos creamos dos objetos de
la clase Thread para lanzar los proceso y que
Multitarea e Hilos en Java
CONCLUSIONES Y
ACLARACIONES:
El concepto de multitarea o multiprocesamiento
es bastante sencillo de entender ya que solo
consiste en hacer varias cosas a la vez sin que
se vea alterado el resultado final. Como ya se
ha dicho en la entrada no todo se puede
paralelizar y en muchas ocasiones suele ser
complicado encontrar la manera de paralelizar
procesos dentro de una aplicación sin que esta
CONCLUSIONES Y
ACLARACIONES:
Por otro lado para los que empiecen a ver estos
temas de la concurrencia, multitarea y demás,
no so preocupen al principio si cuesta
programar problemas de este tipo ya que a
parte de la multitarea se mezclan cosas como la
herencia y las Interfaces que al principio son
cosas que cuestan de asimilar, así que ir poco a
poco pero tener muy claro que la multitarea es

Más contenido relacionado

La actualidad más candente

Eclipse refactoring
Eclipse refactoringEclipse refactoring
Eclipse refactoringsrcid
 
Identificar Requisitos Funcionais.pdf
Identificar Requisitos Funcionais.pdfIdentificar Requisitos Funcionais.pdf
Identificar Requisitos Funcionais.pdfmmarolla1
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - JavaArthur Emanuel
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Helder da Rocha
 
SQL 101 for business experts and stakeholders
SQL 101 for business experts and stakeholdersSQL 101 for business experts and stakeholders
SQL 101 for business experts and stakeholdersIván Stepaniuk
 
Ejercicios resueltos de sql
Ejercicios resueltos de sqlEjercicios resueltos de sql
Ejercicios resueltos de sqlJulian Benavidez
 
Java – ejercicio 2
Java – ejercicio 2Java – ejercicio 2
Java – ejercicio 2ayreonmx
 
Metricas del proyecto de Software - introduccion
Metricas del proyecto de Software - introduccionMetricas del proyecto de Software - introduccion
Metricas del proyecto de Software - introduccionJose Diaz Silva
 
Crear conexion a servidor en MySQL Workbench
Crear conexion a servidor en  MySQL WorkbenchCrear conexion a servidor en  MySQL Workbench
Crear conexion a servidor en MySQL WorkbenchJair Ospino Ardila
 
55 New Features in Java SE 8
55 New Features in Java SE 855 New Features in Java SE 8
55 New Features in Java SE 8Simon Ritter
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosIgor Takenami
 

La actualidad más candente (20)

threads e-sockets-em-java
 threads e-sockets-em-java threads e-sockets-em-java
threads e-sockets-em-java
 
Eclipse refactoring
Eclipse refactoringEclipse refactoring
Eclipse refactoring
 
Identificar Requisitos Funcionais.pdf
Identificar Requisitos Funcionais.pdfIdentificar Requisitos Funcionais.pdf
Identificar Requisitos Funcionais.pdf
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - Java
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
 
03 requerimientos
03 requerimientos03 requerimientos
03 requerimientos
 
Instalacion oracle forms
Instalacion oracle formsInstalacion oracle forms
Instalacion oracle forms
 
Modelo Persistente
Modelo PersistenteModelo Persistente
Modelo Persistente
 
SQL 101 for business experts and stakeholders
SQL 101 for business experts and stakeholdersSQL 101 for business experts and stakeholders
SQL 101 for business experts and stakeholders
 
Aula Tratamento de Exceções
Aula Tratamento de ExceçõesAula Tratamento de Exceções
Aula Tratamento de Exceções
 
Ejercicios resueltos de sql
Ejercicios resueltos de sqlEjercicios resueltos de sql
Ejercicios resueltos de sql
 
Sitema de control de matricula
Sitema de control de matriculaSitema de control de matricula
Sitema de control de matricula
 
Java – ejercicio 2
Java – ejercicio 2Java – ejercicio 2
Java – ejercicio 2
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
Metricas del proyecto de Software - introduccion
Metricas del proyecto de Software - introduccionMetricas del proyecto de Software - introduccion
Metricas del proyecto de Software - introduccion
 
Crear conexion a servidor en MySQL Workbench
Crear conexion a servidor en  MySQL WorkbenchCrear conexion a servidor en  MySQL Workbench
Crear conexion a servidor en MySQL Workbench
 
55 New Features in Java SE 8
55 New Features in Java SE 855 New Features in Java SE 8
55 New Features in Java SE 8
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Introducción a Angular
Introducción a AngularIntroducción a Angular
Introducción a Angular
 
Psp ingeniería del software
Psp ingeniería del softwarePsp ingeniería del software
Psp ingeniería del software
 

Destacado (7)

Hilos En Java
Hilos En JavaHilos En Java
Hilos En Java
 
Multithreads Programming
Multithreads ProgrammingMultithreads Programming
Multithreads Programming
 
Programacion Multihilo
Programacion MultihiloProgramacion Multihilo
Programacion Multihilo
 
Java Threads (Hilos en Java)
Java Threads (Hilos en Java)Java Threads (Hilos en Java)
Java Threads (Hilos en Java)
 
Java multi threading
Java multi threadingJava multi threading
Java multi threading
 
Programación Multihilo
Programación MultihiloProgramación Multihilo
Programación Multihilo
 
[ Cocoa Gurus] Spotlight
[ Cocoa Gurus]  Spotlight[ Cocoa Gurus]  Spotlight
[ Cocoa Gurus] Spotlight
 

Similar a Multitarea e hilos en java

Similar a Multitarea e hilos en java (20)

Hilos
HilosHilos
Hilos
 
Hilos java
Hilos javaHilos java
Hilos java
 
Guia1 programacion de-procesos_concurrentes-hilos
Guia1 programacion de-procesos_concurrentes-hilosGuia1 programacion de-procesos_concurrentes-hilos
Guia1 programacion de-procesos_concurrentes-hilos
 
Java class library
Java class libraryJava class library
Java class library
 
Jyoc java-cap01 tipos de datos y entrada-salida
Jyoc java-cap01 tipos de datos y entrada-salidaJyoc java-cap01 tipos de datos y entrada-salida
Jyoc java-cap01 tipos de datos y entrada-salida
 
Table models
Table modelsTable models
Table models
 
MANUAL DE JAVA
MANUAL DE JAVAMANUAL DE JAVA
MANUAL DE JAVA
 
Java desde cero
Java desde ceroJava desde cero
Java desde cero
 
MANUAL JAVA
MANUAL JAVA MANUAL JAVA
MANUAL JAVA
 
JAVA
JAVA JAVA
JAVA
 
JAVA 2
JAVA 2JAVA 2
JAVA 2
 
Java desde cero
Java desde ceroJava desde cero
Java desde cero
 
Manual de Java
Manual de JavaManual de Java
Manual de Java
 
Chap 15apin
Chap 15apinChap 15apin
Chap 15apin
 
Bases de datos con java
Bases de datos con javaBases de datos con java
Bases de datos con java
 
Multitarea
MultitareaMultitarea
Multitarea
 
Manual.curso.de.java.desde.cero
Manual.curso.de.java.desde.ceroManual.curso.de.java.desde.cero
Manual.curso.de.java.desde.cero
 
Java desde 0
Java desde 0Java desde 0
Java desde 0
 
Programación multihebra en java
Programación multihebra en javaProgramación multihebra en java
Programación multihebra en java
 
Java desde 0 pre
Java desde 0 preJava desde 0 pre
Java desde 0 pre
 

Más de Tensor

Libertad
LibertadLibertad
LibertadTensor
 
Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)Tensor
 
Metodo de la bisección
Metodo de la bisecciónMetodo de la bisección
Metodo de la bisecciónTensor
 
Transito vehicular
Transito vehicularTransito vehicular
Transito vehicularTensor
 
Teoria de colas
Teoria de colasTeoria de colas
Teoria de colasTensor
 
Practica 7 2016
Practica 7 2016Practica 7 2016
Practica 7 2016Tensor
 
Practica 6 2016
Practica 6 2016Practica 6 2016
Practica 6 2016Tensor
 
Game maker
Game makerGame maker
Game makerTensor
 
Practica 5 2016
Practica 5 2016Practica 5 2016
Practica 5 2016Tensor
 
Procesamiento de archivos
Procesamiento de archivosProcesamiento de archivos
Procesamiento de archivosTensor
 
Cadenas y funciones de cadena
Cadenas y funciones de cadenaCadenas y funciones de cadena
Cadenas y funciones de cadenaTensor
 
Simulación en promodel clase 04
Simulación en promodel clase 04Simulación en promodel clase 04
Simulación en promodel clase 04Tensor
 
Reduccion de orden
Reduccion de ordenReduccion de orden
Reduccion de ordenTensor
 
Variación+de+parametros
Variación+de+parametrosVariación+de+parametros
Variación+de+parametrosTensor
 
Coeficientes indeterminados enfoque de superposición
Coeficientes indeterminados   enfoque de superposiciónCoeficientes indeterminados   enfoque de superposición
Coeficientes indeterminados enfoque de superposiciónTensor
 
Bernoulli y ricatti
Bernoulli y ricattiBernoulli y ricatti
Bernoulli y ricattiTensor
 
Practica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicioPractica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicioTensor
 
Clase 14 ondas reflejadas
Clase 14 ondas reflejadasClase 14 ondas reflejadas
Clase 14 ondas reflejadasTensor
 
Ondas em
Ondas emOndas em
Ondas emTensor
 
Clase 7 ondas electromagneticas
Clase 7 ondas electromagneticasClase 7 ondas electromagneticas
Clase 7 ondas electromagneticasTensor
 

Más de Tensor (20)

Libertad
LibertadLibertad
Libertad
 
Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)
 
Metodo de la bisección
Metodo de la bisecciónMetodo de la bisección
Metodo de la bisección
 
Transito vehicular
Transito vehicularTransito vehicular
Transito vehicular
 
Teoria de colas
Teoria de colasTeoria de colas
Teoria de colas
 
Practica 7 2016
Practica 7 2016Practica 7 2016
Practica 7 2016
 
Practica 6 2016
Practica 6 2016Practica 6 2016
Practica 6 2016
 
Game maker
Game makerGame maker
Game maker
 
Practica 5 2016
Practica 5 2016Practica 5 2016
Practica 5 2016
 
Procesamiento de archivos
Procesamiento de archivosProcesamiento de archivos
Procesamiento de archivos
 
Cadenas y funciones de cadena
Cadenas y funciones de cadenaCadenas y funciones de cadena
Cadenas y funciones de cadena
 
Simulación en promodel clase 04
Simulación en promodel clase 04Simulación en promodel clase 04
Simulación en promodel clase 04
 
Reduccion de orden
Reduccion de ordenReduccion de orden
Reduccion de orden
 
Variación+de+parametros
Variación+de+parametrosVariación+de+parametros
Variación+de+parametros
 
Coeficientes indeterminados enfoque de superposición
Coeficientes indeterminados   enfoque de superposiciónCoeficientes indeterminados   enfoque de superposición
Coeficientes indeterminados enfoque de superposición
 
Bernoulli y ricatti
Bernoulli y ricattiBernoulli y ricatti
Bernoulli y ricatti
 
Practica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicioPractica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicio
 
Clase 14 ondas reflejadas
Clase 14 ondas reflejadasClase 14 ondas reflejadas
Clase 14 ondas reflejadas
 
Ondas em
Ondas emOndas em
Ondas em
 
Clase 7 ondas electromagneticas
Clase 7 ondas electromagneticasClase 7 ondas electromagneticas
Clase 7 ondas electromagneticas
 

Último

Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfMARIAPAULAMAHECHAMOR
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFlor Idalia Espinoza Ortega
 

Último (20)

Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdf
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamica
 

Multitarea e hilos en java

  • 2. Multitarea e Hilos en Java En esta entrada vamos a ver las diferentes maneras de como trabajar con Threads en Java (o hilos en español). En esencia la multitarea nos permite ejecutar varios procesos a la vez; es decir, de forma concurrente y por tanto eso nos permite hacer programas que se ejecuten en menor tiempo y
  • 4. Multitarea e Hilos en Java Si en vez de hacerlo de forma secuencial, lo hiciéramos con 4 hilos, el programa tardaría en ejecutarse solo 20 segundos, es decir el tiempo que tardaría en ejecutarse el proceso más largo. Esto evidentemente sería lo ideal, pero la realidad es que no todo se puede paralelizar y hay que saber el número de procesos en paralelo que podemos lanzar de forma eficiente. En principio
  • 6. Multitarea e Hilos en Java En Java para utilizar la multitarea debemos de usar la clase Thread (es decir que la clase que implementemos debe heredar de la clase Thread) y la clase Thread implementa la Interface Runnable. En el siguiente diagrama de clase mostramos la Interface Runnable y la clase Thread con sus principales métodos:
  • 8. Multitarea e Hilos en Java En esta entrada no vamos a ver como utilizar todos los métodos de la clase Thread, pero se muestran para que entiendas de que existen y a parte por su nombre se puede intuir su funcionalidad. En esta entrada vamos a poner un ejemplo para
  • 9. Multitarea e Hilos en Java En este ejemplo vamos a simular el proceso de cobro de un supermercado; es decir, unos clientes van con un carro lleno de productos y una cajera les cobra los productos, pasándolos uno a uno por el escaner de la caja registradora. En este caso la cajera debe de procesar la compra cliente a cliente, es decir que primero le cobra al cliente 1, luego al cliente 2 y así sucesivamente.
  • 10. Multitarea e Hilos en Java Para ello vamos a definir una clase “Cajera” y una clase “Cliente” el cual tendrá un “array de enteros” que representaran los productos que ha comprado y el tiempo que la cajera tardará en pasar el producto por el escaner; es decir, que si tenemos un array con [1,3,5] significará que el cliente ha comprado 3 productos y que la cajera tardara en procesar el producto 1 ‘1 segundo’, el
  • 11. Multitarea e Hilos en Java Explicado este ejemplo vamos a ver como hemos definido estas clases: Clase “Cajera.java“:
  • 13. Multitarea e Hilos en Java Clase “Cliente.java“:
  • 15. Multitarea e Hilos en Java Si ejecutásemos este programa propuesto con dos Clientes y con un solo proceso (que es lo que se suele hacer normalmente), se procesaría primero la compra del Cliente 1 y después la del Cliente 2, con lo cual se tardará el tiempo del Cliente 1 + Cliente 2.
  • 16. Multitarea e Hilos en Java A continuación vamos a ver como programamos el método Main para lanzar el programa. CUIDADO: Aunque hayamos puesto dos objetos de la clase Cajera (cajera1 y cajera2) no significa que tengamos dos cajeras independientes, lo que estamos diciendo es que dentro del mismo hilo se ejecute primero los métodos de la cajera1 y después los métodos de la cajera2, por tanto a
  • 17. Multitarea e Hilos en Java Clase “Main.java“:
  • 19. Multitarea e Hilos en Java Si ejecutamos este código tendremos lo siguiente:
  • 20. Multitarea e Hilos en Java Como vemos se procesa primero la compra del cliente 1 y después la compra del cliente 2 tardando en procesar ambas compras un tiempo de 26 segundos.
  • 21. Multitarea e Hilos en Java ¿Y si en vez de procesar primero un cliente y después otro, procesásemos los dos a la vez?, ¿Cuanto tardaría el programa en ejecutarse?. Pues bien si en vez de haber solo una Cajera (es decir un solo hilo), hubiese dos Cajeras (es decir dos hilos o threads) podríamos procesar los dos clientes a la vez y tardar menos tiempo en ejecutarse el programa.
  • 22. Multitarea e Hilos en Java Para ello debemos de modificar la clase “Cajera.java” y hacer que esta clase herede de la clase Thread para heredar y sobre-escribir algunos de sus métodos. Primero vamos a ver como codificamos esta nueva clase “CajeraThread.java” y después explicamos sus características
  • 25. Multitarea e Hilos en Java Lo primero que vemos y que ya hemos comentado es que la clase “CajeraThread” debe de heredar de la clase Thread: “extendsThread“.
  • 26. Multitarea e Hilos en Java Otra cosa importante que vemos es que hemos sobre-escrito el método “run()” (de ahi la etiqueta @Override) . Este método es imprescindibles sobre-escribirlo (ya que es un método que esta en la clase Runnable y la clase Thread Implementa esa Interface) porque en él se va a codificar la funcionalidad que se ha de ejecutar en un hilo; es decir, que lo que se
  • 27. Multitarea e Hilos en Java En esta clase “CajeraThread” se pueden sobre- escribir más métodos para que hagan acciones sobre el hilo o thread como por ejemplo, parar el thread, ponerlo en reposos, etc. A continuación vamos a ver como programamos el método Main para que procese a los clientes de forma paralela y ver como se tarda menos en procesar todo. El método Main esta en la clase
  • 29. Multitarea e Hilos en Java Ahora vamos a ver cual sería el resultado de esta ejecución y vamos a comprobar como efectivamente el programa se ejecuta de forma paralela y tarda solo 15 segundos en terminar su ejecución:
  • 31. Multitarea e Hilos en Java En este ejemplo vemos como el efecto es como si dos cajeras procesasen la compra de los clientes de forma paralela sin que el resultado de la aplicación sufra ninguna variación en su resultado final, que es el de procesar todas las compras de los clientes de forma independiente. De forma gráfica vemos que el programa ha realizado lo siguiente en dos hilos distintos:
  • 33. Multitarea e Hilos en Java Otra forma de hacer lo mismo pero sin heredar de la clase “Thread” es implementar la Interface “Runnable”. En este caso no dispondremos ni podremos sobre-escribir los métodos de la clase Thread ya que no la vamos a utilizar y solo vamos a tener que sobre-escribir el método “run()“.
  • 34. Multitarea e Hilos en Java En este caso solo será necesario implementar el método “run()” para que los procesos implementados en ese método se ejecuten en un hilo diferente. Vamos a ver un ejemplo de como utilizando objetos de las clases “Cliente.java” y “Cajera.java” podemos implementar la multitarea en la misma clase donde se llama al método Main de la aplicación.
  • 36. Multitarea e Hilos en Java En este caso implementamos el método “run()” dentro de la misma clase donde se encuentra el método Main, y en el llamamos al método de “procesarCompra()” de la clase Cajera. Dentro del método Main, nos creamos dos objetos de la misma clase en la que estamos (“new MainRunnable”) y nos creamos dos objetos de la clase Thread para lanzar los proceso y que
  • 38. CONCLUSIONES Y ACLARACIONES: El concepto de multitarea o multiprocesamiento es bastante sencillo de entender ya que solo consiste en hacer varias cosas a la vez sin que se vea alterado el resultado final. Como ya se ha dicho en la entrada no todo se puede paralelizar y en muchas ocasiones suele ser complicado encontrar la manera de paralelizar procesos dentro de una aplicación sin que esta
  • 39. CONCLUSIONES Y ACLARACIONES: Por otro lado para los que empiecen a ver estos temas de la concurrencia, multitarea y demás, no so preocupen al principio si cuesta programar problemas de este tipo ya que a parte de la multitarea se mezclan cosas como la herencia y las Interfaces que al principio son cosas que cuestan de asimilar, así que ir poco a poco pero tener muy claro que la multitarea es