SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
Java Advanced Programming
Introduccion II
http://javacuriosities.blogspot.com.ar/
Green Threads VS Native Threads
 Green Threads: Solo pueden cambiar de contexto cuando un Thread
necesita cambiar explícitamente (Thread.yield(), Object.wait(), etc.) o
cuando el Thread esta bloqueado por I/O. No hay mas Green Threads
desde la versión 1.2, todos los thread son Native Thread. Este tipo de
hilos era controlado por la JVM.
 Native Threads: Pueden cambiar de contexto desde un Thread hasta
otro en cualquier momento. Este tipo de Thread son controlado por el
sistema operativo.
Java advanced programming
Prioridades
 Cada thread puede tener una prioridad diferente.
 Cada thread tendrá la misma prioridad que su padre de manera inicial.
 El scheduler elige el hilo con mayor prioridad, si hubiera hilos con igual
prioridad usa la estrategia FIFO(First Input, First Output) para seleccionar
el hilo
 El algoritmo de selección va a depender del SO.
 JDK soporta 10 niveles de prioridad, se aconseja usar los niveles
predefinidos ya que cada SO en realidad tiene su propio rango.
Si intentamos asignar un numero que no este entre 1 y 10 recibiremos
una exception.
- java.lang.Thread.MIN_PRIORITY = 1
- java.lang.Thread.NORM_PRIORITY = 5
- java.lang.Thread.MAX_PRIORITY = 10
Java advanced programming
Metodo setPriority()
Para establecer la prioridad de un thread se utiliza el método setPriority().
 Las prioridades van desde 1 hasta 10.
 Cada thread se crea con la misma prioridad que su padre.
 Si ponemos un valor diferente obtendremos una exception.
 La prioridad tiene que ser asignada antes de llamar al método start() sino
no tendrá efecto.
Java advanced programming
Race Condition
Java advanced programming
Hablamos de Race Condicion (O Condición de carrera) cuando el resultado
de una operación depende del orden de ejecución.
Esto se debe a la falta de sincronización de ciertas operaciones lo cual
conduce a este tipo de resultados, en estos casos hablamos de
indeterminismo.
Un ejemplo sencillo es el incremento de una variable entera desde dos
thread de forma concurrentes, dado que el incremento no es una operación
atómica puede suceder que estos threads se pisen entre si y solo uno realice
el incremento.
Synchronized
Java advanced programming
Cuando se utiliza la palabra clave synchronized se esta indicando una
zona restringida para el uso de Threads, esta zona restringida para efectos
prácticos puede ser considerada un candado (“lock”) sobre la instancia del
objeto en cuestión.
Lo anterior implica que si es invocado un método synchronized únicamente
el Thread que lo invoca tiene acceso a la instancia del objeto, y cualquier
otro Thread que intente acceder a esta misma instancia tendrá que esperar
hasta que sea terminada la ejecución del método synchronized.
Cuando la instancia tiene mas de un método syncronized los llamados
sobre cualquier otro método syncronized deben esperar.
El synchronized puede ser a en diferentes niveles
- Métodos de instancia
- Métodos de clase
- Sobre un objeto
Metodos notify() y notifyAll()
Java advanced programming
 wait(): Le indica al hilo en curso que abandone el monitor y se vaya a
dormir hasta que otro hilo llame a notify() o notifyAll(). El método wait
puede recibir la cantidad de tiempo máxima que debe esperar, si
ejecutamos wait(0) es lo mismo que decir infinito o sea hasta que alguien
llame al notify.
 notify(): Despierta a alguno de los hilo que realizó una llamada a wait
sobre el mismo objeto. No esta garantizado que hilo se despierta.
 notifyAll(): Despierta todos los hilos que realizaron una llamada a wait
sobre el mismo objeto.
Estos tres métodos deben ser llamados dentro de un contexto sincronizado
sino arrojan la exception "java.lang.IllegalMonitorStateException".
Estos métodos pertenecen a la clase Object.
Deadlock
 Es el bloqueo permanente de un conjunto de procesos o hilos de
ejecución en un sistema concurrente que compiten por recursos del
sistema o bien se comunican entre ellos. A diferencia de otros problemas
de concurrencia de procesos, no existe una solución general para los
interbloqueos.
Java advanced programming
Livelock
 Un livelock es una situación en la que dos o más threads se bloquean
entre sí, respondiendo a una acción que es causada por otro hilo. En
contraste con una situación de bloqueo, en la que dos o más threads
esperan en un estado específico, los threads que participan en un livelock
cambian su estado de manera que se impide el progreso en su tarea.
Java advanced programming
Starvation
 Nos referimos a Starvation cuando un thread no es capaz de adquirir
acceso a un recurso para ejecutar progreso en su tarea. Esto sucede
cuando un recurso compartido no esta disponible por periodos largos
debido a que hay otros "greedy" threads.
Java advanced programming
Fair locks
 Un fair lock tiene en cuenta el time waiting de los threads que esperan
sobre un lock cuando tiene que seleccionar el siguiente thread.
Java advanced programming
Thread-Safe
 Una función (o método) Thread-safe puede ser invocada por múltiples
hilos de ejecución sin preocuparnos de que los datos a los que accede
dicha función (o método) sean corrompidos por alguno de los hilos ya que
se asegura la atomicidad de la operación, es decir, la función se ejecuta
de forma serializada sin interrupciones, por lo general, adquiriendo un
mutex (Bloqueo de exclusión mutua).
Java advanced programming
Metodo interrupt()
Java advanced programming
El método interrupt() sirve para interrumpir un thread, si este estuviera en
estado blocked (Ya sea por wait(), join(), sleep() , etc) arrojaría la exception
java.lang.InterruptedException.
Este método es usado cuando queremos detener la ejecución de un
Thread.
Es un método de instancia.
Metodos
Java advanced programming
Clase Object Clase Thread Interfaz Runnable Deprecado Estatico
wait() start() run() NO
notify() join() NO
notifyAll() setPriority() NO
setName() NO
isAlive() NO
isInterrupted() NO
isDaemon() NO
yield() SI
sleep() SI
stop() SI NO
suspend() SI NO
resume() SI NO
User Threads VS Daemon Threads
Java advanced programming
 User Thread: Corresponden a los hilos que se ejecutan en primer plano
notificando el fín de su ejecución al usuario.
 Daemon: Son aquellos hilos que se realizan en background (Segundo
plano), tareas que no forman parte de la esencia de un programa y que
se están ejecutando mientras no se finalice la aplicación.
La JVM va a seguir viva mientras que existan User Threads, el método
main es un User Thread.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (19)

Tema 12 hilos en java por gio
Tema 12   hilos en java por gioTema 12   hilos en java por gio
Tema 12 hilos en java por gio
 
2o departamental Programacion 3
2o departamental Programacion 32o departamental Programacion 3
2o departamental Programacion 3
 
GUIA 1 HILOS Y PROCESOS
GUIA 1 HILOS Y PROCESOSGUIA 1 HILOS Y PROCESOS
GUIA 1 HILOS Y PROCESOS
 
Máquina virtual en java
Máquina virtual en javaMáquina virtual en java
Máquina virtual en java
 
Programando en java
Programando en javaProgramando en java
Programando en java
 
Thread group demonios- parte1
Thread group demonios- parte1Thread group demonios- parte1
Thread group demonios- parte1
 
PCJ Sesión 9: Threads
PCJ Sesión 9: ThreadsPCJ Sesión 9: Threads
PCJ Sesión 9: Threads
 
Multitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplosMultitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplos
 
De Threads a CompletableFutures
De Threads a CompletableFuturesDe Threads a CompletableFutures
De Threads a CompletableFutures
 
Chap 15cpin
Chap 15cpinChap 15cpin
Chap 15cpin
 
Programación multitarea
Programación multitareaProgramación multitarea
Programación multitarea
 
Lps 17 hilos
Lps 17 hilosLps 17 hilos
Lps 17 hilos
 
Curso de Sistemas Operativos - Unidad Procesos e Hilos
Curso de Sistemas Operativos - Unidad Procesos e HilosCurso de Sistemas Operativos - Unidad Procesos e Hilos
Curso de Sistemas Operativos - Unidad Procesos e Hilos
 
Subprocesamiento Mùltiple
Subprocesamiento MùltipleSubprocesamiento Mùltiple
Subprocesamiento Mùltiple
 
Lenguaje Java
Lenguaje JavaLenguaje Java
Lenguaje Java
 
COMANDOS DE JAVA
COMANDOS DE JAVACOMANDOS DE JAVA
COMANDOS DE JAVA
 
S Incronizacion De Procesos
S Incronizacion De ProcesosS Incronizacion De Procesos
S Incronizacion De Procesos
 
Fundamentos de la Refactorización
Fundamentos de la RefactorizaciónFundamentos de la Refactorización
Fundamentos de la Refactorización
 
Edhiel y aranza_22
Edhiel y aranza_22Edhiel y aranza_22
Edhiel y aranza_22
 

Similar a Thread 02

Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1
Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1
Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1Oscar V
 
Programación multihebra en java
Programación multihebra en javaProgramación multihebra en java
Programación multihebra en javaLaboratorios ACME
 
SCJP, Clase 9: Threads
SCJP, Clase 9: ThreadsSCJP, Clase 9: Threads
SCJP, Clase 9: Threadsflekoso
 
Clase9 threads
Clase9 threadsClase9 threads
Clase9 threadsjorg_marq
 
programacion concurrente java.pptx
programacion concurrente java.pptxprogramacion concurrente java.pptx
programacion concurrente java.pptxjuan gonzalez
 
Threads en java
Threads en javaThreads en java
Threads en javajent46
 
DefinicionExplicacionEjemplosdeHilosenJava
DefinicionExplicacionEjemplosdeHilosenJavaDefinicionExplicacionEjemplosdeHilosenJava
DefinicionExplicacionEjemplosdeHilosenJavaDanielCorzo12
 
DIAPOSITIVAS UNIDAD3.pdf
DIAPOSITIVAS UNIDAD3.pdfDIAPOSITIVAS UNIDAD3.pdf
DIAPOSITIVAS UNIDAD3.pdfDaveParker23
 
Programacion concurrente
Programacion concurrenteProgramacion concurrente
Programacion concurrenteAnel Sosa
 
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteTópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteJosé Antonio Sandoval Acosta
 
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrenteTopicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrenteJosé Antonio Sandoval Acosta
 
Programación concurrente
Programación concurrenteProgramación concurrente
Programación concurrentecarlos Salazar
 

Similar a Thread 02 (20)

Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1
Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1
Ocp, jse 6 programmer (1 z0 851) - guia practica 4 de 7(concurrencia) v1
 
Multitarea
MultitareaMultitarea
Multitarea
 
Programación multihebra en java
Programación multihebra en javaProgramación multihebra en java
Programación multihebra en java
 
Chap 15fpin
Chap 15fpinChap 15fpin
Chap 15fpin
 
Chap 15apin
Chap 15apinChap 15apin
Chap 15apin
 
SCJP, Clase 9: Threads
SCJP, Clase 9: ThreadsSCJP, Clase 9: Threads
SCJP, Clase 9: Threads
 
Clase9 threads
Clase9 threadsClase9 threads
Clase9 threads
 
Hilos
HilosHilos
Hilos
 
Threads.pdf
Threads.pdfThreads.pdf
Threads.pdf
 
programacion concurrente java.pptx
programacion concurrente java.pptxprogramacion concurrente java.pptx
programacion concurrente java.pptx
 
Threads en java
Threads en javaThreads en java
Threads en java
 
Hilos
HilosHilos
Hilos
 
DefinicionExplicacionEjemplosdeHilosenJava
DefinicionExplicacionEjemplosdeHilosenJavaDefinicionExplicacionEjemplosdeHilosenJava
DefinicionExplicacionEjemplosdeHilosenJava
 
DIAPOSITIVAS UNIDAD3.pdf
DIAPOSITIVAS UNIDAD3.pdfDIAPOSITIVAS UNIDAD3.pdf
DIAPOSITIVAS UNIDAD3.pdf
 
Programacion concurrente
Programacion concurrenteProgramacion concurrente
Programacion concurrente
 
Lab5 guia
Lab5 guiaLab5 guia
Lab5 guia
 
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteTópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
 
hilosJava.pptx
hilosJava.pptxhilosJava.pptx
hilosJava.pptx
 
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrenteTopicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
 
Programación concurrente
Programación concurrenteProgramación concurrente
Programación concurrente
 

Más de Luis Miguel De Bello (18)

Java Web Services - REST
Java Web Services - RESTJava Web Services - REST
Java Web Services - REST
 
Java Web Services - SOAP Temas Adicionales
Java Web Services - SOAP Temas AdicionalesJava Web Services - SOAP Temas Adicionales
Java Web Services - SOAP Temas Adicionales
 
Java Web Services - SOAP Binding
Java Web Services - SOAP BindingJava Web Services - SOAP Binding
Java Web Services - SOAP Binding
 
Java Web Services - Introduccion
Java Web Services - IntroduccionJava Web Services - Introduccion
Java Web Services - Introduccion
 
Java Web - JSF
Java Web - JSFJava Web - JSF
Java Web - JSF
 
Java Web - Struts
Java Web - StrutsJava Web - Struts
Java Web - Struts
 
Java Web - JSP
Java Web - JSPJava Web - JSP
Java Web - JSP
 
Java Web - Servlet
Java Web - ServletJava Web - Servlet
Java Web - Servlet
 
Base de datos - Clase 2
Base de datos - Clase 2Base de datos - Clase 2
Base de datos - Clase 2
 
Base de datos - Clase 3
Base de datos - Clase 3Base de datos - Clase 3
Base de datos - Clase 3
 
Base de datos - Clase 1
Base de datos - Clase 1Base de datos - Clase 1
Base de datos - Clase 1
 
Base de datos - Clase 4
Base de datos - Clase 4Base de datos - Clase 4
Base de datos - Clase 4
 
Java Web - Session
Java Web - SessionJava Web - Session
Java Web - Session
 
Java Web - Introduccion
Java Web - IntroduccionJava Web - Introduccion
Java Web - Introduccion
 
Sockets TCP
Sockets TCPSockets TCP
Sockets TCP
 
Sockets UDP
Sockets UDPSockets UDP
Sockets UDP
 
Log4J
Log4JLog4J
Log4J
 
Best Practices
Best PracticesBest Practices
Best Practices
 

Último

Fisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfFisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfJessLeonelVargasJimn
 
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfCENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfpaola110264
 
Fisiología del Potasio en Plantas p .pdf
Fisiología del Potasio en Plantas p .pdfFisiología del Potasio en Plantas p .pdf
Fisiología del Potasio en Plantas p .pdfJessLeonelVargasJimn
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasSegundo Silva Maguiña
 
3039_ftg_01Entregable 003_Matematica.pptx
3039_ftg_01Entregable 003_Matematica.pptx3039_ftg_01Entregable 003_Matematica.pptx
3039_ftg_01Entregable 003_Matematica.pptxJhordanGonzalo
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)ssuser6958b11
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptxGARCIARAMIREZCESAR
 
produccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptxproduccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptxEtse9
 
Uso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendiosUso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendioseduardochavezg1
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfMirthaFernandez12
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUMarcosAlvarezSalinas
 
COMPONENTES DE LA VIA FERREA UAJMS - BOLIVIA
COMPONENTES DE LA VIA FERREA UAJMS - BOLIVIACOMPONENTES DE LA VIA FERREA UAJMS - BOLIVIA
COMPONENTES DE LA VIA FERREA UAJMS - BOLIVIARafaelPaco2
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.pptVitobailon
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones025ca20
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023ANDECE
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTFundación YOD YOD
 
Parámetros de Perforación y Voladura. para Plataformas
Parámetros de  Perforación y Voladura. para PlataformasParámetros de  Perforación y Voladura. para Plataformas
Parámetros de Perforación y Voladura. para PlataformasSegundo Silva Maguiña
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxLuisvila35
 
SOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadSOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadANDECE
 
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdf
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdfManual de Usuario Estacion total Sokkia SERIE SET10K.pdf
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdfSandXmovex
 

Último (20)

Fisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfFisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdf
 
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfCENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
 
Fisiología del Potasio en Plantas p .pdf
Fisiología del Potasio en Plantas p .pdfFisiología del Potasio en Plantas p .pdf
Fisiología del Potasio en Plantas p .pdf
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la Ingenierías
 
3039_ftg_01Entregable 003_Matematica.pptx
3039_ftg_01Entregable 003_Matematica.pptx3039_ftg_01Entregable 003_Matematica.pptx
3039_ftg_01Entregable 003_Matematica.pptx
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
 
produccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptxproduccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptx
 
Uso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendiosUso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendios
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
 
COMPONENTES DE LA VIA FERREA UAJMS - BOLIVIA
COMPONENTES DE LA VIA FERREA UAJMS - BOLIVIACOMPONENTES DE LA VIA FERREA UAJMS - BOLIVIA
COMPONENTES DE LA VIA FERREA UAJMS - BOLIVIA
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.ppt
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NIST
 
Parámetros de Perforación y Voladura. para Plataformas
Parámetros de  Perforación y Voladura. para PlataformasParámetros de  Perforación y Voladura. para Plataformas
Parámetros de Perforación y Voladura. para Plataformas
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
 
SOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadSOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidad
 
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdf
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdfManual de Usuario Estacion total Sokkia SERIE SET10K.pdf
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdf
 

Thread 02

  • 1. Java Advanced Programming Introduccion II http://javacuriosities.blogspot.com.ar/
  • 2. Green Threads VS Native Threads  Green Threads: Solo pueden cambiar de contexto cuando un Thread necesita cambiar explícitamente (Thread.yield(), Object.wait(), etc.) o cuando el Thread esta bloqueado por I/O. No hay mas Green Threads desde la versión 1.2, todos los thread son Native Thread. Este tipo de hilos era controlado por la JVM.  Native Threads: Pueden cambiar de contexto desde un Thread hasta otro en cualquier momento. Este tipo de Thread son controlado por el sistema operativo. Java advanced programming
  • 3. Prioridades  Cada thread puede tener una prioridad diferente.  Cada thread tendrá la misma prioridad que su padre de manera inicial.  El scheduler elige el hilo con mayor prioridad, si hubiera hilos con igual prioridad usa la estrategia FIFO(First Input, First Output) para seleccionar el hilo  El algoritmo de selección va a depender del SO.  JDK soporta 10 niveles de prioridad, se aconseja usar los niveles predefinidos ya que cada SO en realidad tiene su propio rango. Si intentamos asignar un numero que no este entre 1 y 10 recibiremos una exception. - java.lang.Thread.MIN_PRIORITY = 1 - java.lang.Thread.NORM_PRIORITY = 5 - java.lang.Thread.MAX_PRIORITY = 10 Java advanced programming
  • 4. Metodo setPriority() Para establecer la prioridad de un thread se utiliza el método setPriority().  Las prioridades van desde 1 hasta 10.  Cada thread se crea con la misma prioridad que su padre.  Si ponemos un valor diferente obtendremos una exception.  La prioridad tiene que ser asignada antes de llamar al método start() sino no tendrá efecto. Java advanced programming
  • 5. Race Condition Java advanced programming Hablamos de Race Condicion (O Condición de carrera) cuando el resultado de una operación depende del orden de ejecución. Esto se debe a la falta de sincronización de ciertas operaciones lo cual conduce a este tipo de resultados, en estos casos hablamos de indeterminismo. Un ejemplo sencillo es el incremento de una variable entera desde dos thread de forma concurrentes, dado que el incremento no es una operación atómica puede suceder que estos threads se pisen entre si y solo uno realice el incremento.
  • 6. Synchronized Java advanced programming Cuando se utiliza la palabra clave synchronized se esta indicando una zona restringida para el uso de Threads, esta zona restringida para efectos prácticos puede ser considerada un candado (“lock”) sobre la instancia del objeto en cuestión. Lo anterior implica que si es invocado un método synchronized únicamente el Thread que lo invoca tiene acceso a la instancia del objeto, y cualquier otro Thread que intente acceder a esta misma instancia tendrá que esperar hasta que sea terminada la ejecución del método synchronized. Cuando la instancia tiene mas de un método syncronized los llamados sobre cualquier otro método syncronized deben esperar. El synchronized puede ser a en diferentes niveles - Métodos de instancia - Métodos de clase - Sobre un objeto
  • 7. Metodos notify() y notifyAll() Java advanced programming  wait(): Le indica al hilo en curso que abandone el monitor y se vaya a dormir hasta que otro hilo llame a notify() o notifyAll(). El método wait puede recibir la cantidad de tiempo máxima que debe esperar, si ejecutamos wait(0) es lo mismo que decir infinito o sea hasta que alguien llame al notify.  notify(): Despierta a alguno de los hilo que realizó una llamada a wait sobre el mismo objeto. No esta garantizado que hilo se despierta.  notifyAll(): Despierta todos los hilos que realizaron una llamada a wait sobre el mismo objeto. Estos tres métodos deben ser llamados dentro de un contexto sincronizado sino arrojan la exception "java.lang.IllegalMonitorStateException". Estos métodos pertenecen a la clase Object.
  • 8. Deadlock  Es el bloqueo permanente de un conjunto de procesos o hilos de ejecución en un sistema concurrente que compiten por recursos del sistema o bien se comunican entre ellos. A diferencia de otros problemas de concurrencia de procesos, no existe una solución general para los interbloqueos. Java advanced programming
  • 9. Livelock  Un livelock es una situación en la que dos o más threads se bloquean entre sí, respondiendo a una acción que es causada por otro hilo. En contraste con una situación de bloqueo, en la que dos o más threads esperan en un estado específico, los threads que participan en un livelock cambian su estado de manera que se impide el progreso en su tarea. Java advanced programming
  • 10. Starvation  Nos referimos a Starvation cuando un thread no es capaz de adquirir acceso a un recurso para ejecutar progreso en su tarea. Esto sucede cuando un recurso compartido no esta disponible por periodos largos debido a que hay otros "greedy" threads. Java advanced programming
  • 11. Fair locks  Un fair lock tiene en cuenta el time waiting de los threads que esperan sobre un lock cuando tiene que seleccionar el siguiente thread. Java advanced programming
  • 12. Thread-Safe  Una función (o método) Thread-safe puede ser invocada por múltiples hilos de ejecución sin preocuparnos de que los datos a los que accede dicha función (o método) sean corrompidos por alguno de los hilos ya que se asegura la atomicidad de la operación, es decir, la función se ejecuta de forma serializada sin interrupciones, por lo general, adquiriendo un mutex (Bloqueo de exclusión mutua). Java advanced programming
  • 13. Metodo interrupt() Java advanced programming El método interrupt() sirve para interrumpir un thread, si este estuviera en estado blocked (Ya sea por wait(), join(), sleep() , etc) arrojaría la exception java.lang.InterruptedException. Este método es usado cuando queremos detener la ejecución de un Thread. Es un método de instancia.
  • 14. Metodos Java advanced programming Clase Object Clase Thread Interfaz Runnable Deprecado Estatico wait() start() run() NO notify() join() NO notifyAll() setPriority() NO setName() NO isAlive() NO isInterrupted() NO isDaemon() NO yield() SI sleep() SI stop() SI NO suspend() SI NO resume() SI NO
  • 15. User Threads VS Daemon Threads Java advanced programming  User Thread: Corresponden a los hilos que se ejecutan en primer plano notificando el fín de su ejecución al usuario.  Daemon: Son aquellos hilos que se realizan en background (Segundo plano), tareas que no forman parte de la esencia de un programa y que se están ejecutando mientras no se finalice la aplicación. La JVM va a seguir viva mientras que existan User Threads, el método main es un User Thread.