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.

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more