Duvida com Thread

eu tenho uma thread “TreadA()” e tenho uma aplicaao que a executa:

TreadA treada = new Thread();

treada.Start()

depois que ela termina de executar
eu pego o State dela e verifico e ele esta como “Terminated”

Se eu tentar executar ela novamente

treada.Start()

me retorna a excessao abaixo:

Exception in thread “AWT-EventQueue-0” java.lang.IllegalThreadStateException

para nao dar esta excessao eu repito: TreadA treada = new Thread();

isto e correto?
pois a minha duvida e… se eu ja tinha dado um new nela… o objeto ja existe… entao ao meu ver
eu so precisaria dar um start nela novamente…
e se seu ficar dando new nela, isso nao esta ocupando processamento e memoria?
digo, se ja existe o objeto e o mesmo ja executou ele deve estar ocupando memoria, processamento, etc…

em fim…
como eu estou num desenvolvimento de um projeto grande… nao posso dar continuidade
sem tirar estas duvidas…

obrigado desde ja…

e se eu der um new nela novamente, isso nao esta provocando um acumulo de memoria devido ao fato
de ja ter um new no inicio do aplicativo?

Aconselho você a estudar mais sobre threads, já que seu projeto trabalha com isso.

As threads só podem ser executadas uma única vez, por isso deste erro. Cada thread tem um ciclo de vida e ao final ela estará morta, portando se precisar executar de novo só com uma nova thread. Existe uma maneira de reutilizar threads, mas ai o assunto fica mais complexo, com uso de pool de threads.

Enfim, você pode usar a interface Runnable e passar a implementação para cada thread recém criada, mas sempre precisará de uma thread nova ou em executacao(pool).

Sobre o consumo de memória, vai depender do seu programa, mas em geral a thread anterior será eliminada se você sobrescrever com outra instancia, ou seja não referenciar a thread antiga no seu programa, neste caso o GC irá fazer a limpeza. Já o processamento só vai existir se a thread estiver rodando…

Melhor evitar o uso direto de Threads, se possível pesquisa um pouco sobre a API java.util.concurrent.