260 likes | 466 Views
Capítulo 8. Threads. Threads. Introdução Criando e executando threads A classe java . lang .Thread A interface java . lang . Runnable Estados da thread. O Scheduler Prioridades das threads Interação entre threads Sincronização Bloqueios Deadlock. Introdução às threads.
E N D
Capítulo 8 Threads
Threads • Introdução • Criando e executando threads • A classe java.lang.Thread • A interface java.lang.Runnable • Estados da thread • O Scheduler • Prioridades das threads • Interação entre threads • Sincronização • Bloqueios • Deadlock
Introdução às threads • Uma thread representa uma linha de execução de sua aplicação Java, onde as instruções são executadas uma por vez. • Quando executamos uma aplicação Java, o JVM dá início à thread raiz da aplicação através do método main()
Introdução às threads main() metodo1() metodo2() ...() metodoN()
Programação multithreaded • Através do uso de múltiplas threads podemos realizar o processamento simultâneo de partes diferentes de sua aplicação. • O desenvolvimento de aplicações que possuem múltiplas threads é chamada programação multithreaded ou programação concorrente.
Programação multithreaded run() x() y() z() main() a() b() c() d() run() m() n() run() k()
Criando e executando threads • Forma 1 Uma das formas mais simples de criar e executar uma nova thread é através da classe java.lang.Thread: • Crie uma nova classe derivada (filha) da classe java.lang.Thread e sobrescreva o método run() inserindo as instruções a serem executadas pela nova thread • A partir de sua aplicação principal crie uma instância desta classe thread e execute o seu método start()
Criando e executando threads • Forma 1 publicclassMinhaThreadextendsThread { publicvoidrun() { ... ... } } publicclass Principal { publicstaticvoidmain(String[] args) { Thread t = newMinhaThread(); t.start(); ... ... } }
Criando e executando threads • Forma 2 Uma outra forma de criar e executar uma nova thread é através da interface java.lang.Runnable: • Crie uma nova classe que implementa a interface java.lang.Runnable e implemente o método run() inserindo as instruções a serem executadas pela nova thread • A partir de sua aplicação principal crie uma instância da classe java.lang.Thread passando em seu método construtor uma instância de sua classe de sua classe thread e então execute o seu método start() da thread
Criando e executando threads • Forma 2 publicclassMinhaThreadimplementsRunnable { publicvoidrun() { ... ... } } publicclass Principal { publicstaticvoidmain(String[] args) { Thread t = new Thread(newMinhaThread()); t.start(); ... ... } }
Estados da thread Pronta para ser executada Dormindo Suspensa Bloqueada Executando Morta
Estados da thread • Pronta para ser executada Uma thread fica pronta para ser executada tão logo seu método start() é executado. Lá ela fica aguardando até que o JVM tenha oportunidade de executá-la start() Pronta para ser executada Executando
Estados da thread • Executando Durante a sua execução, uma thread pode deixar de ser executada, cedendo sua vez para Pronta para ser executada yeld() Executando
Estados da thread • Morta Executando stop() Morta
Estados da thread • Dormindo Pronta para ser executada Dormindo sleep(millis) Executando
Estados da thread • Suspensa Pronta para ser executada resume() Suspensa suspend() Executando
Estados da thread • Bloqueada Pronta para ser executada notify() Bloqueada wait() Executando
Estados da thread start() Pronta para ser executada resume() notify() Dormindo Suspensa Bloqueada yeld() sleep(millis) suspend() wait() Executando stop() Morta