terça-feira, 29 de janeiro de 2013
Threads
Boa tarde pessoal,
Hoje vou falar um pouco sobre Thread no Java, esse assunto cai muito na prova de certificação OCJP, a antiga SCJP, essas informações foram tiradas parcialmente do livro certificação Java 5, autor Roberto Rubinstein Serson.
Uma observação que tenho pra colocar é que as versões impares das certificações alteram a sintaxe e as versões pares alteram as APIs, ou seja o 5 do 6 só alteraram algumas APIs do Java, já a versão 7 altera a sintaxe.
Uma Thread é representada por um objeto da classe Thread, e ha duas formas de se definir Thread, em Java:
- Dando um extends da classe Thread ou Implementando a interface Runnable.
Para implementar Runnable, é preciso definir somente um método:
public void run()
Esse método será executado, pela nova thread, depois que ela tiver sido iniciada pelo controlador de threads (scheduler).
As chamadas abaixo são válidas para construtores de Classe Thread:
- Thread()
- Thread(Runnable target)
- Thread(Runnable target, String name)
- Thread(String name)
- Thread(ThreadGroup group, Runnable target)
- Thread(ThreadGroup group,Runnable target, String name)
- Thread(ThreadGroup group, String name)
O nome da thread não necessita ser único, portanto duas threads com o mesmo nome pode ser executadas separadamente. Qualquer String pode ser usada como nome de uma thread.
Quando o método start() é chamado sobre um objeto Thread, a thread tem o seu estado alterado de NEW para RUNNABLE. No momento em que o controlador dá a thread a chance de ser executada, o método run() é chamado.
diversas threads podem estar em estado RUNNABLE, mas somente uma thread pode ser executada em um certo momento, no caso de sistemas mono-processados. A ordem em que as threads serão iniciadas podem ser diferente na ordem em que elas serão executadas.
É correto chamar o método run() diretamente, no entanto, ele não inicia uma nova thread de execução. Ao contrário, a thread corrente o executa como um método normal.
O método start() deve ser chamado somente uma vez sobre um objeto Thread, caso contrário, será lançada uma IllegalStateException.
Uma thread é considerada morta (dead), quando seu método run() retorna. Uma thread morta não pode ser novamente iniciada.
O método sleep() coloca a thread em execução, para dormir um determinado tempo. Esse tempo é fornecido em milissegundos.
public static void sleep(long milis)
O método sleep() é definido como estático dentro da classe Thread.
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.