Buscar

Cap. 10 Threads

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Isaias Camilo Boratti
-Sistemas executam tarefas de maneira concorrente (ex. corpo humano).
-Computadores também executam tarefas concorrentemente (vários programas 
sendo executados “simultaneamente” --> controle do S. O.).
-JAVA permite que o programador escreva uma aplicação contendo grupos de 
tarefas que são executadas de maneira concorrente --> threads.
-Thread --> Constitui-se em uma seqüência de instruções que realiza 
determina tarefa.
-Uma aplicação convencional pode ser considerada uma aplicação de uma 
única thread.
-Java --> Multithreading
10. Threads
Isaias Camilo Boratti
Programa
Programa
thread
thread a
thread b
Isaias Camilo Boratti
Exemplo:
Programa que faça um download da web de um clipe de áudio e que antes de 
terminar o download já inicie a sua execução.
Thread
- Objeto da classe Thread (java.lang) ou de uma classe derivada 
desta.
- Na classe derivada, o projetista sobrepõe o método run() no qual 
coloca-se o corpo (conjunto de instruções) da thread.
public class MinhaThread extends Thread
{
public MinhaThread (String nomedathread)
{ // corpo do construtor }
public void run()
{
// corpo da thread
}
}
Um objeto thread, após construção, é ativado através do método start() 
herdado da classe Thread. O método start() ativa automaticamente o método 
run().
Exemplo: 
MinhaThread umaT;
umaT = new MinhaThread(“Exemplo”);
umaT.start();
Ciclos de vida de um objeto thread
start()
yield() fim E/S
notify
Tempo wait(objeto)
finalizado 
sleep(tempo) E/S
Nascimento 
(construção)
pronto
executando
bloqueada
Finalizada (terminou ou 
ocorreu exceção)
dormindo
esperando
Classe Thread (Principais métodos)
Thread(String nomedathread) --> construtor;
Thread() --> constrói uma thread de nome Thread-n onde n =1, 2, 3,... ;
void run() --> método que deve ser sobreposto e que conterá o conj. de 
instruções da thread;
void start() --> faz com que o objeto thread entre em estado de pronto. 
Ocorrerá uma exceção caso um objeto thread já em execução receba um start();
static void sleep(int t) --> faz com que o objeto thread “durma” por um tempo 
t expresso em milisegundos;
Isaias Camilo Boratti
boolean isAlive() --> retorna true se o start() já foi ativado e o thread
ainda não se encerrou ou foi interrompido, caso contrário false;
void setName(String nome) --> atribui um nome a thread;
String getName() --> retorna o nome da thread;
void yield() --> faz com que a thread saia da execução e entre em estado 
de pronto, possibilitando que outra thread entre em execução 
(sistemas sem fracionamento de tempo).
Isaias Camilo Boratti
thread --> tem uma prioridade
(mínima : 1; máxima : 10; default : 5)
void setPriority (int p) --> define uma prioridade para a thread;
int getPriority() --> retorna a prioridade da thread.
Obs.: Thread em Java envolve muito mais informações. Consulte bibliografia.
Execução de threads com prioridades
Plataformas sem fracionamento do tempo:
Cada thread de prioridade mais alta toma o processador e só libera 
quando a thread sair do estado executando.
Isaias Camilo Boratti
Plataformas com fracionamento de tempo:
Prioridade threads
10 a b
6
1
c d e
f
Exemplo
public class ThreadImpressao extends Thread
{ private int tempo;
public ThreadImpressao(String nome)
{ super (nome); tempo = (int)(Math.random()*10000);
System.out.println(“Nome:” +this.getName() +” tempo sono:” +tempo);
}
public void run()
{ try
{ System.out.println (getName()+” indo dormir”);
Thread.sleep(tempo); 
}
catch (InterruptedException e)
{ System.out.println(e.toString(); }
System.out.println(getName()+” acordando”);
}
}
Isaias Camilo Boratti
public class Principal
{
public static void main(String a[])
{
ThreadImpressao t1, t2, t3;
t1 = new ThreadImpressao(“thread 1”);
t2 = new ThreadImpressao(“thread 2”);
t3 = new ThreadImpressao(“thread 3”);
System.out.println(“\n Iniciando threads...”);
t1.start();
t2.start();
t3.start();
System.out.println(“threads já disparadas...”);
}
}

Outros materiais