Threads Ativos

3 respostas
M

Um thread é inativo somente quando o método run termina sua execução ou ele é considerado inativo também antes de chamar o método start().

Ex.: Thread t=new Thread(thread);

*o thread aqui é considerado inativo?

t.start();

*thead ativo

*final do método run() o thread está inativo.

3 Respostas

nadilsons

Quando uma thread passa para o estado inativo, ela NUNCA mais será reativada…

Por isso, quando uma thread é criada… o estado da mesma nao é inativo.

LPJava

correto… o seu exemplo… quando dar um new Thread vc tem um objeto da class thread… mais ele nao eh um thread ativo… ou seja no estado executavel… mais quando dar um start ele passa de inativo para o estado executavel. dai o agendador decide o q fazer com ele…

ViniGodoy

http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.State.html

A thread tem os seguintes estados:

NEW -&gt Antes do start. Na verdade, você nem tem uma thread ainda, só um objeto que descreve a futura nova thread.

RUNNABLE-&gt Uma thread que está executando na VM.

BLOCKED-&gtUma thread que está esperando para entrar num bloco synchronized - entra na categoria de estados NOT_RUNNABLE;

WAITING-&gtUma thread dentro de um wait ou sleep - entra na categoria de estados NOT_RUNNABLE

TIMED_WAITING-&gtUma thread que está esperando por outra terminar (após um join(), por exemplo) por um timeout específico - entra na categoria de estados NOT_RUNNABLE.

TERMINATED-&gtUma thread que já saiu do run() e finalizou. Novamente, você não tem exatamente uma thread aqui, só o objeto descrevendo a thread que morreu. Esse estado também é chamado de DEAD.

De maneira mais simples, os estados que você descreveu obedecem ao seguinte diagrama:

Assim, antes do start() o estado da thread é new, não inativo.

Embora o diagrama mostre o comando stop(), vale lembrar que ele é deprecated e não deve ser usado.

Criado 28 de junho de 2007
Ultima resposta 29 de jun. de 2007
Respostas 3
Participantes 4