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

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

Threads: Introdução e Implementação Professor: Hyggo Almeida.

Apresentações semelhantes


Apresentação em tema: "Threads: Introdução e Implementação Professor: Hyggo Almeida."— Transcrição da apresentação:

1 Threads: Introdução e Implementação Professor: Hyggo Almeida

2 O que vimos na última aula? Visão crítica sobre padrões Revisão final Revisão final Qual o impacto do E se? Qual o impacto do E se? Over Engineering Over Engineering 2 Threads: Introdução e Implementação

3 O que veremos hoje? Threads Introdução Introdução Implementação Implementação 3 Threads: Introdução e Implementação

4 O que é uma Thread ? Uma thread é um contexto ou linha de execução Vários programas executando em um mesmo programa Vários programas executando em um mesmo programa 4 Threads: Introdução e Implementação Vários contextos em abas

5 O que é uma Thread ? Programas normais (single thread) possuem apenas uma linha de execução... 5 Threads: Introdução e Implementação

6 O que é uma Thread ? Programas com mais de uma thread (multithreaded) possuem mais de uma linha de execução dentro do programa... 6 Threads: Introdução e Implementação

7 O que é uma Thread ? Parece ser um processo......mas compartilha o mesmo espaço de endereçamento...mas compartilha o mesmo espaço de endereçamento...é muito rápido chavear entre threads......é muito rápido chavear entre threads... Uma thread possui... Uma pilha de execução para chamar métodos, passar parâmetros, alocar variáveis locais... Uma pilha de execução para chamar métodos, passar parâmetros, alocar variáveis locais... Um Program Counter... Um Program Counter... 7 Threads: Introdução e Implementação Uma thread é um fluxo único de controle seqüencial dentro de um programa

8 As classes Timer e TimerTask Antes de implementarmos uma thread......vamos utilizar objetos que utilizam thread para executar o seu trabalho...vamos utilizar objetos que utilizam thread para executar o seu trabalho Classe Timer Utilizada para escalonar tarefas Utilizada para escalonar tarefas Escalona instâncias de TimerTask Escalona instâncias de TimerTask 8 Threads: Introdução e Implementação

9 Exemplo de implementação... 9 public class Reminder { Timer timer; public Reminder(int seconds) { timer = new Timer(); timer.schedule(new RemindTask(),seconds*1000); } class RemindTask extends TimerTask { public void run() { System.out.println(Tarefa realizada.); timer.cancel(); //Finaliza o Timer } public static void main(String args[]) { new Reminder(5); System.out.println(Tarefa escalonada.); }

10 As classes Timer e TimerTask Vamos implementar e ver o resultado! E se usássemos Thread.sleep() diretamente??? 10 Threads: Introdução e Implementação Tarefa escalonada. (depois de 5 segundos) Tarefa realizada!

11 Implementando Threads Duas formas: Extensão da Classe Thread Extensão da Classe Thread Implementação da interface Runnable Implementação da interface Runnable Qual escolher? Se sua classe precisa herdar de uma outra classe do seu modelo de negócio... use interface! Se sua classe precisa herdar de uma outra classe do seu modelo de negócio... use interface! 11 Threads: Introdução e Implementação

12 Estendendo Thread 12 Threads: Introdução e Implementação public class SimpleThread extends Thread { public SimpleThread(String str) { super(str); } public void run() { for (int i = 0; i < 10; i++) { System.out.println(i + + getName()); try { sleep((long)(Math.random() * 1000)); } catch (InterruptedException e) {} } System.out.println(Feito! + getName()); }

13 Utilizando a implementação com Thread 13 Threads: Introdução e Implementação public class TestTwoThreads { public static void main(String[] args) { new SimpleThread("hyggo").start(); new SimpleThread("almeida").start(); System.out.println("Thread principal finalizada!"); }

14 Implementando Runnable 14 Threads: Introdução e Implementação public class SimpleThread implements Runnable { public void run() { for (int i = 0; i < 10; i++) { System.out.println(i + + Thread.currentThread().getName()); try { Thread.sleep((long)(Math.random() * 1000)); } catch (InterruptedException e) {} } System.out.println(Feito! + Thread.currentThread().getName()); } }

15 Utilizando a implementação com Runnable 15 Threads: Introdução e Implementação public class TestTwoThreads { public static void main(String[] args) { new Thread(new SimpleThread(),"hyggo").start(); new Thread(new SimpleThread(),"almeida").start(); System.out.println("Thread principal finalizada!"); }

16 O que vimos hoje? Threads Introdução Introdução Implementação Implementação 16 Threads: Introdução e Implementação

17 O que veremos na próxima aula? Threads Ciclo de vida Ciclo de vida Escalonamento de Threads Escalonamento de Threads 17 Threads: Introdução e Implementação

18 Dúvidas? ? 18 Threads: Introdução e Implementação


Carregar ppt "Threads: Introdução e Implementação Professor: Hyggo Almeida."

Apresentações semelhantes


Anúncios Google