A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Professor: Hyggo Almeida

Apresentações semelhantes


Apresentação em tema: "Professor: Hyggo Almeida"— Transcrição da apresentação:

1 Professor: Hyggo Almeida
Pool de Threads Professor: Hyggo Almeida

2 O que vimos na última aula?
Threads Sincronização Pool de Threads

3 O que veremos hoje? Threads Pool Pool de Threads

4 Pool de Threads Um pool de threads é uma coleção de threads disponíveis para realizar tarefas Melhor desempenho quando se executa um grande número de tarefas Limitação de recursos disponíveis Com um pool, não é necessário gerenciar o ciclo de vida das threads Pool de Threads

5 Pool de Threads Como implementar?
Instanciar uma implementação da interface ExecutorService ThreadPoolExecutor ScheduledThreadPoolExecutor Pode-se definir... O número básico e máximo do pool (número de threads) O tipo de estrutura de dados para armazenar as tarefas Como tratar tarefas rejeitadas Como criar e terminar threads Pool de Threads

6 Pool de Threads Há métodos fábrica na classe Executors para a criação de pools... newFixedThreadPool(int) - Cria um pool com número fixo de threads e fila ilimitada de tarefas newCachedThreadPool() - Cria um pool de threads sem limite, com recuperação automática de threads É uma boa opção quando há muitas tarefas pequenas a executar assincronamente. Threads não usadas por 60 segundos são removidas newSingleThreadExecutor() - Cria uma thread única em background com fila ilimitada de tarefas As tarefas serão executadas seqüencialmente Pool de Threads

7 Pool de Threads Exemplo com Runnable
public class WorkerThread implements Runnable { private int workerNumber; public WorkerThread(int number) { workerNumber = number; } public void run() { for (int i=0;i<=100;i+=20) { // Realiza algum trabalho... System.out.println(“Worker:” + workerNumber + ", %: " + i); try { Thread.sleep((int)(Math.random() * 1000)); } catch (InterruptedException e) {} Pool de Threads

8 Pool de Threads Exemplo com Runnable 2 threads e 5 tarefas
import java.util.concurrent.*; public class ThreadPoolTest { public static void main(String[] args) { ExecutorService tpes = Executors.newFixedThreadPool(2); WorkerThread[] workers = new WorkerThread[5]; for (int i = 0; i < workers.length; i++) { workers[i] = new WorkerThread(i); tpes.execute(workers[i]); } tpes.shutdown(); Pool de Threads

9 Pool de Threads Vamos implementar o exemplo com Runnable

10 Pool de Threads Exemplo com Callable import java.util.concurrent.*;
public class CallableWorkerThread implements Callable { private int workerNumber; public CallableWorkerThread(int number) { workerNumber = number; } public Object call() { for (int i = 0; i <= 100; i += 20) { // Realiza algum trabalho... System.out.println(“Worker:” + workerNumber + ", %: " + i); try { Thread.sleep((int)(Math.random() * 1000)); } catch (InterruptedException e) {} return(new Integer(workerNumber)); Pool de Threads

11 Pool de Threads Exemplo com Callable public class ThreadPoolTest2 {
public static void main(String[] args) { ExecutorService tpes = Executors.newCachedThreadPool(); CallableWorkerThread workers[] = new CallableWorkerThread[4]; Future futures[] = new Future[4]; for (int i = 0; i < workers.length; i++) { workers[i] = new CallableWorkerThread(i); futures[i]=tpes.submit(workers[i]); } try { System.out.println("Ending worker: " +futures[i].get()); } catch (Exception e) {} tpes.shutdown(); Pool de Threads

12 Pool de Threads Vamos implementar o exemplo com Callable

13 O que vimos hoje? Threads Pool Pool de Threads

14 Dúvidas? ? Pool de Threads


Carregar ppt "Professor: Hyggo Almeida"

Apresentações semelhantes


Anúncios Google