hilos programacion conurrente

download hilos programacion conurrente

of 18

description

clase de hilos por ossa

Transcript of hilos programacion conurrente

  • Hilos

    Compartir datos sin sincronizacin

    Cmo compartir datos con sincronizacin: hacer las operaciones atmicas

    Tarea - examen 2

    Procesamiento multiple

    Juan C. Ossa

    1

    1

    Departamento Ciencia de la Computacin

    Universidad Cooperativa de Colombia

    [email protected]

    Ingeniero Qumico UniValle

    2015

    Juan C. Ossa Multi tarea

  • Hilos

    Compartir datos sin sincronizacin

    Cmo compartir datos con sincronizacin: hacer las operaciones atmicas

    Tarea - examen 2

    Generalidades

    1

    Hilos

    Crear con marco de trabajo Executor - proyecto01

    2

    Compartir datos sin sincronizacin

    proyecto02

    3

    Cmo compartir datos con sincronizacin: hacer las operaciones

    atmicas

    proyecto03

    4

    Tarea - examen 2

    Ejercicio 1

    Ejercicio 2

    Juan C. Ossa Multi tarea

  • Hilos

    Compartir datos sin sincronizacin

    Cmo compartir datos con sincronizacin: hacer las operaciones atmicas

    Tarea - examen 2

    Crear con marco de trabajo Executor - proyecto01

    Generalidades

    1

    Hilos

    Crear con marco de trabajo Executor - proyecto01

    2

    Compartir datos sin sincronizacin

    proyecto02

    3

    Cmo compartir datos con sincronizacin: hacer las operaciones

    atmicas

    proyecto03

    4

    Tarea - examen 2

    Ejercicio 1

    Ejercicio 2

    Juan C. Ossa Multi tarea

  • Hilos

    Compartir datos sin sincronizacin

    Cmo compartir datos con sincronizacin: hacer las operaciones atmicas

    Tarea - examen 2

    Crear con marco de trabajo Executor - proyecto01

    Un objeto Executor crea y administra un grupo de subprocesos, al

    cual se le denomina reserva de subprocesos, para ejecutar objetos

    Runnable .

    Los objetos Executor pueden reutilizar los subprocesos existentes

    para eliminar la sobrecarga de crear un nuevo subproceso para cada

    tarea, y pueden mejorar el rendimiento al optimizar el nmero de

    subprocesos, con lo cual se asegura que el procesador se mantenga

    ocupado, sin crear demasiados subprocesos como para que la

    aplicacin se quede sin recursos.

    Juan C. Ossa Multi tarea

  • Hilos

    Compartir datos sin sincronizacin

    Cmo compartir datos con sincronizacin: hacer las operaciones atmicas

    Tarea - examen 2

    Crear con marco de trabajo Executor - proyecto01

    TaskExecutor

    // crea objeto ExecutorService para administrar los subprocesos

    ExecutorService ejecutorSubprocesos = Executors.newCachedThreadPool();

    // inicia los subprocesos y los coloca en el estado ejecutable

    ejecutorSubprocesos.execute( tarea1 );

    // cierra los subprocesos trabajadores cuando terminan sus tareas

    ejecutorSubprocesos.shutdown();

    Juan C. Ossa Multi tarea

  • Hilos

    Compartir datos sin sincronizacin

    Cmo compartir datos con sincronizacin: hacer las operaciones atmicas

    Tarea - examen 2

    proyecto02

    Generalidades

    1

    Hilos

    Crear con marco de trabajo Executor - proyecto01

    2

    Compartir datos sin sincronizacin

    proyecto02

    3

    Cmo compartir datos con sincronizacin: hacer las operaciones

    atmicas

    proyecto03

    4

    Tarea - examen 2

    Ejercicio 1

    Ejercicio 2

    Juan C. Ossa Multi tarea

  • Hilos

    Compartir datos sin sincronizacin

    Cmo compartir datos con sincronizacin: hacer las operaciones atmicas

    Tarea - examen 2

    proyecto02

    Se ilustra los peligros de compartir un objeto entre varios

    subprocesos sin una sincronizacin apropiada. En este ejemplo, dos

    objetos Runnable mantienen referencias a un solo arreglo entero.

    Cada objeto Runnable escribe tres valores en el arreglo, y despus

    termina.

    Juan C. Ossa Multi tarea

  • Hilos

    Compartir datos sin sincronizacin

    Cmo compartir datos con sincronizacin: hacer las operaciones atmicas

    Tarea - examen 2

    proyecto02

    SimpleArray

    La Clase ArregloSimple permitir que esos subprocesos coloquen

    valores int en arreglo.

    Se inicializa la variable indiceEscritura , la cual se utilizar para

    determinar el elemento del arreglo en el que se debe escribir a

    continuacin.

    El constructor crea un arreglo entero del tamao deseado.

    El mtodo agregar (int valor) permite insertar nuevos valores al

    nal del arreglo.

    Juan C. Ossa Multi tarea

  • Hilos

    Compartir datos sin sincronizacin

    Cmo compartir datos con sincronizacin: hacer las operaciones atmicas

    Tarea - examen 2

    proyecto02

    ArrayWriter

    La clase EscritorArreglo implementa a la interfaz Runnable para

    denir una tarea para insertar valores en un objeto ArregloSimple .

    El constructor recibe dos argumentos: un valor entero, que viene

    siendo el primer valor que insertar esta tarea en el objeto

    ArregloSimple , y una referencia al objeto ArregloSimple . Luego se

    invoca el mtodo agregar del objeto ArregloSimple .

    La tarea se completa una vez que se agregan tres enteros

    consecutivos.

    Juan C. Ossa Multi tarea

  • Hilos

    Compartir datos sin sincronizacin

    Cmo compartir datos con sincronizacin: hacer las operaciones atmicas

    Tarea - examen 2

    proyecto02

    SharedArrayTest

    La clase PruebaArregloCompartido ejecuta dos tareas

    EscritorArreglo que agregan valores a un solo objeto ArregloSimple

    . Se construye un objeto ArregloSimple con seis elementos. Luego

    se crean dos nuevas tareas EscritorArreglo , una que coloca los

    valores 1 a 3 en el objeto ArregloSimple , y una que coloca los

    valores 11 a 13..

    Juan C. Ossa Multi tarea

  • Hilos

    Compartir datos sin sincronizacin

    Cmo compartir datos con sincronizacin: hacer las operaciones atmicas

    Tarea - examen 2

    proyecto02

    // construye el objeto compartido

    ArregloSimple arregloSimpleCompartido = new ArregloSimple( 6 );

    // crea dos tareas para escribir en el objeto ArregloSimple compartido EscritorArreglo escritor1 = new EscritorArreglo( 1, arregloSimpleCompartido );

    EscritorArreglo escritor2 = new EscritorArreglo( 11, arregloSimpleCompartido );

    // ejecuta las tareas con un objeto

    ExecutorService ExecutorService ejecutor = Executors.newCachedThreadPool(); ejecutor.execute( escritor1 );

    ejecutor.execute( escritor2 );

    ejecutor.shutdown();

    Juan C. Ossa Multi tarea

  • Hilos

    Compartir datos sin sincronizacin

    Cmo compartir datos con sincronizacin: hacer las operaciones atmicas

    Tarea - examen 2

    proyecto03

    Generalidades

    1

    Hilos

    Crear con marco de trabajo Executor - proyecto01

    2

    Compartir datos sin sincronizacin

    proyecto02

    3

    Cmo compartir datos con sincronizacin: hacer las operaciones

    atmicas

    proyecto03

    4

    Tarea - examen 2

    Ejercicio 1

    Ejercicio 2

    Juan C. Ossa Multi tarea

  • Hilos

    Compartir datos sin sincronizacin

    Cmo compartir datos con sincronizacin: hacer las operaciones atmicas

    Tarea - examen 2

    proyecto03

    El problema recae en el mtodo agregar , el cual almacena el valor

    de indiceEscritura , coloca un nuevo valor en ese elemento y

    despus incrementa a indiceEscritura . Dicho mtodo no presentara

    problemas en un programa con un solo subproceso.

    Juan C. Ossa Multi tarea

  • Hilos

    Compartir datos sin sincronizacin

    Cmo compartir datos con sincronizacin: hacer las operaciones atmicas

    Tarea - examen 2

    proyecto03

    SimpleArray

    Se declara el mtodo como synchronized , lo cual hace que todas

    las operaciones en este mtodo se comporten como una sola

    operacin atmica.Se realiza la primera suboperacin: almacenar el

    valor de indiceEscritura . Luego se dene la segunda suboperacin,

    escribir un elemento en el elemento que est en el ndice posicin .

    Por ultimo se incrementa indiceEscritura . Cuando el mtodo

    termina de ejecutarse, el subproceso en ejecucin libera el bloqueo

    de ArregloSimple , lo cual hace posible que otro subproceso

    empiece a ejecutar el mtodo agregar.

    Juan C. Ossa Multi tarea

  • Hilos

    Compartir datos sin sincronizacin

    Cmo compartir datos con sincronizacin: hacer las operaciones atmicas

    Tarea - examen 2

    Ejercicio 1

    Ejercicio 2

    Generalidades

    1

    Hilos

    Crear con marco de trabajo Executor - proyecto01

    2

    Compartir datos sin sincronizacin

    proyecto02

    3

    Cmo compartir datos con sincronizacin: hacer las operaciones

    atmicas

    proyecto03

    4

    Tarea - examen 2

    Ejercicio 1

    Ejercicio 2

    Juan C. Ossa Multi tarea

  • Hilos

    Compartir datos sin sincronizacin

    Cmo compartir datos con sincronizacin: hacer las operaciones atmicas

    Tarea - examen 2

    Ejercicio 1

    Ejercicio 2

    Realizar un programa en Java que lance n hilos concurrentes

    (pasando n como argumento desde la lnea de comandos). Cada

    hilo ejecutar un bucle de 100 iteraciones.

    Juan C. Ossa Multi tarea

  • Hilos

    Compartir datos sin sincronizacin

    Cmo compartir datos con sincronizacin: hacer las operaciones atmicas

    Tarea - examen 2

    Ejercicio 1

    Ejercicio 2

    Generalidades

    1

    Hilos

    Crear con marco de trabajo Executor - proyecto01

    2

    Compartir datos sin sincronizacin

    proyecto02

    3

    Cmo compartir datos con sincronizacin: hacer las operaciones

    atmicas

    proyecto03

    4

    Tarea - examen 2

    Ejercicio 1

    Ejercicio 2

    Juan C. Ossa Multi tarea

  • Hilos

    Compartir datos sin sincronizacin

    Cmo compartir datos con sincronizacin: hacer las operaciones atmicas

    Tarea - examen 2

    Ejercicio 1

    Ejercicio 2

    Escribir un programa que utilice hilos concurrentes para encontrar

    el valor mximo de un arreglo de 500 nmeros enteros generados

    aleatoriamente. Cada hilo investigar un subarreglo de 100

    unidades, y el programa principal deber coordinase con ellos, para

    extraer la solucin nal de las soluciones parciales. Provea la

    sincronizacin que considere necesarias.

    Juan C. Ossa Multi tarea

    HilosCrear con marco de trabajo Executor - proyecto01

    Compartir datos sin sincronizacinproyecto02

    Cmo compartir datos con sincronizacin: hacer las operaciones atmicasproyecto03

    Tarea - examen 2Ejercicio 1Ejercicio 2