Multithreading Parte 3
- parte 3 - Tecnologia em Análise e
Desenvolvimento de Sistemas Profa.: Daniela Costa Terra
Email: daniela.terra@ifmg.edu.br
1
Quando uma Thread termina
(sem ser interrompida)
Relembrando... uma thread termina quando a mesma retorna de seu método run(), após:
um comando de return
executar a última sentença do corpo do método
uma exceção disparada mas não tratada dentro do corpo do método 2
Métodos que foram depreciados
(stop, suspend, resume)
Função dos métodos stop(), suspend() e resume(), depreciados após a versão Java SE 1.2: (seja t um objeto do tipo Thread)
t.stop() interrompe a thread t
t.suspend() suspende a execução da thread t até a chamada
t.resume()
t.resume() muda o estado da thread t de “suspensa” para
“executável”
Abra a documentação da API Java e veja na classe Thread esses métodos marcados como “deprecated”
3
Métodos que foram depreciados
(stop, suspend, resume)
Observe que stop() e suspend() é uma maneira compulsória de interromper uma thread sem o “consentimento” da mesma.
Veja o motivo da depreciação e o que poderia ocorrer de errado:
stop() (questões de segurança). A thread t pode ser interrompida antes que tenha finalizado alguma transação crítica ou antes de ter liberado recursos do sistema operacional
suspend() (propensão à deadlock). A thread t poderá “segurar”
locks de objetos que outras threads necessitariam obter.
t.resume() existe para reverter o estado de uma thread após
a chamada supend()
4
Métodos que foram depreciados
(stop, suspend, resume)
Nenhuma outra thread poderá decidir qual é o melhor
momento para realizar uma interrupção senão a própria
thread!
5
Solicitando a Interrupção de uma Thread
O método interrupt() da classe Thread é uma maneira de
requisitar a interrupção de uma thread
Quando o método interrupt() é chamado o flag interrupted da thread é alterado para true
Toda thread pode, ocasionalmente, verificar seu status interrupted