Introduziremos o conteúdo do pool de threads em detalhes posteriormente; O conteúdo deste capítulo inclui:
Introdução ao Thread e Runnable
Similaridades e diferenças entre thread e runnable
Exemplo de multithreading para thread e runnable
Introdução ao Thread e Runnable
Runnable é uma interface que contém apenas um método Run (). Sua definição é a seguinte:
A cópia do código é a seguinte:
interface pública Runnable {
public abstract void run ();
}
O papel do Runnable, implementa multi-threading. Podemos definir uma classe A para implementar a interface executável;
Tópico é uma classe. O próprio Thread implementa a interface executável. Sua afirmação é a seguinte:
A classe pública thread implementa Runnable {}
O papel do thread é realizar multi-threading.
Similaridades e diferenças entre thread e runnable
A semelhança entre threads e runnable: ambos são "implementações com vários threads".
As diferenças entre Thread e Runnable:
Thread é uma classe e o Runnable é uma interface; Sabemos que "uma classe pode ter apenas uma classe pai, mas pode implementar várias interfaces", então o Runnable tem melhor escalabilidade.
Além disso, o Runnable também pode ser usado para "compartilhar recursos". Ou seja, vários threads são criados com base em um determinado objeto executável e compartilharão recursos no objeto Runnable.
Geralmente, é recomendável implementar multi-threading através do "Runnable"!
Exemplos multithreading para threads e runnable
1. Exemplo multithreading de thread
Abaixo, podemos entender melhor o thread e o Runnable por meio de exemplos e usar um exemplo on -line que é mais convincente.
A cópia do código é a seguinte:
// ThreadTest.java Código fonte
classe Mythread estende thread {
Ticket privado int = 10;
public void run () {
for (int i = 0; i <20; i ++) {
if (this.ticket> 0) {
System.out.println (this.getName ()+"Ticket Sell: Ticket"+this.ticket--);
}
}
}
};
classe pública threadtest {
public static void main (string [] args) {
// Iniciar 3 threads T1, T2, T3;
Mythread t1 = new mythread ();
Mythread t2 = new mythread ();
Mythread t3 = new mythread ();
t1.start ();
t2.start ();
t3.start ();
}
}
Resultados em execução:
A cópia do código é a seguinte:
THREADS-0 VENDAÇÃO DE TIÇÃO: TIÇÃO10
Thread-1 Ticket Selling: Ticket10
Thread-2 Ticket Selling: Ticket10
Thread-1 Ticket Selling: Ticket9
Thread-0 Ticket Selling: Ticket9
Thread-1 Ticket Selling: Ticket8
Thread-2 Ticket Selling: Ticket9
Thread-1 Ticket Selling: Ticket7
Thread-0 Ticket Selling: Ticket8
Thread-1 Ticket Selling: Ticket6
Thread-2 Ticket Selling: Ticket8
Thread-1 Ticket Selling: Ticket5
Thread-0 Ticket Selling: Ticket7
Thread-1 Tickets: Ticket4
Thread-2 Ticket Selling: Ticket7
Thread-1 Ticket Selling: Ticket3
Thread-0 Ticket Selling: Ticket6
Thread-1 Ticket Selling: Ticket2
Thread-2 Ticket Selling: Ticket6
Resultados Descrição:
(01) Mythread herda do thread, que é um thread personalizado. Cada mythread vende 10 ingressos.
(02) A linha principal principal cria e inicia 3 threads infantis mithread. Cada fio infantil vende 10 ingressos.
2. Exemplo multithread de runnable
Em seguida, modificamos o programa acima. Implementar uma interface através do Runnable, implementando assim o multi-threading.
A cópia do código é a seguinte:
// runnabletest.java código -fonte
classe Mythread implementa Runnable {
Ticket privado int = 10;
public void run () {
for (int i = 0; i <20; i ++) {
if (this.ticket> 0) {
System.out.println (Thread.currentThread (). GetName ()+"Ticket Sell: Ticket"+this.ticket--);
}
}
}
};
classe pública runnabletest {
public static void main (string [] args) {
Mythread mt = new mythread ();
// Inicie 3 threads T1, T2, T3 (eles compartilham um objeto executável), e esses 3 threads vendem um total de 10 ingressos!
Thread t1 = novo thread (mt);
Tópico T2 = novo thread (mt);
Thread t3 = novo thread (mt);
t1.start ();
t2.start ();
t3.start ();
}
}
Resultados em execução:
A cópia do código é a seguinte:
THREADS-0 VENDAÇÃO DE TIÇÃO: TIÇÃO10
Thread-2 Ticket Selling: Ticket8
Thread-1 Ticket Selling: Ticket9
Thread-2 Ticket Selling: Ticket6
Thread-0 Ticket Selling: Ticket7
Thread-2 ingressos: Ticket4
Thread-1 Ticket Selling: Ticket5
Thread-2 ingressos: Ticket2
Thread-0 Ticket Selling: Ticket3
Thread-1 Tickets: Ticket1
Resultados Descrição:
(01) Diferentemente dos "Mythread herda do thread";
(02) O encadeamento principal principal cria e inicia 3 threads infantis, e esses três threads infantis são todos criados com base em "MT, objeto executável". O resultado da operação é que esses três fios infantis venderam um total de 10 bilhetes. Isso significa que eles compartilham a interface mythread.