Threads
Threads
Threads
executando
wait( ) E/S
sleep( ) Fim do
Método run( )
Prioridade 9 C
Prioridade 8
.
.
.
Prioridade 3 D E F
Prioridade 2
Prioridade 1 G
Escalonamento de Threads
Prioridade 10 A B
Prioridade 9 C
Prioridade 8
.
.
.
Prioridade 3 D E F
Prioridade 2
Prioridade 1 G
A interface Runnable
• Para utilizar multithreads em Java é necessário
instanciar um objeto de uma classe que estende
a classe básicaThread, certo?
• Uma vez que Java não possui herança múltipla,
como eu posso utilizar um objeto, cuja classe já
é derivada, como no caso da ClasseThread?
– public class Filho extends Pai extends Thread {
……………….
} // isto nao eh possivel em Java
A interface Runnable
• A solução encontrada em Java foi a
utilização de uma interface: Runnable
– No caso, tem-se de implementar esta
interface, que possui o método run( ).
– public class Filho extends Pai implements Runnable
– Ao implementar uma interface, a classe se capacita a
ser tratada como se fosse um objeto do tipo da
inteface implementada.
• Se a classe Filho implementar a interface Runnable, ela
pode ser tratada como tal.
A interface Runnable
• Cria-se uma thread (Classe Thread),
passando para o seu construtor uma
referência do objeto que implementa a
interface Runnable.
– Thread uma_Thread = new Thread(Runnable obj_thread)
– Thread uma_Thread = new Thread(Runnable obj_thread,
String nome_da_thread)
Solução Baseada na Interface
Runnable
Thread
Classe A
referência
Classe B
Runnable
Solução Baseada em Herança da
Classe Thread
Thread
Classe B instanciação