DEV Community

FUNDAMENTOS JAVA
FUNDAMENTOS JAVA

Posted on

1

Suspendendo, retomando e encerrando threads

Métodos obsoletos: suspend(), resume() e stop() da classe Thread foram substituídos em Java 2.

final void resume( )
final void suspend( )
final void stop( )

Problemas causados:
suspend(): podia causar deadlock.
resume(): não podia ser usado sem suspend().
stop(): causava falhas graves na execução de threads.

Alternativa moderna: Usar variáveis de controle (flags) dentro do método run() para:
Suspensão: Flag configurada como "suspender" faz a thread pausar.
Retomada: Flag configurada como "em execução" faz a thread continuar.
Encerramento: Flag configurada como "encerrar" faz a thread terminar.

Image description

Image description

Image description

Variáveis de controle:
suspended: controla a suspensão da thread. Inicializada como false.
stopped: controla o encerramento da thread. Inicializada como false.

Método run():
Contém um bloco synchronized que verifica a variável suspended.
Se suspended for true, o método wait() é chamado para suspender a thread.

Suspensão da thread:
Para suspender, chama-se o método mysuspend(), que configura suspended como true.

Retomada da thread:
Para retomar, chama-se o método myresume(), que configura suspended como false e chama notify().

Encerramento da thread:
Para encerrar, chama-se o método mystop(), que configura stopped como true.
mystop() também configura suspended como false e chama notify() para garantir que a thread suspensa seja corretamente encerrada.

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more