→Criando threads
[edição verificada] | [edição verificada] |
==Criando threads==
Para criar sua própria ''thread'' por meio da classe <code>Thread</code>, é preciso realizar 3 etapas: Definir o código a ser executado pela ''thread'', referenciar esse código em uma instância de <code>Thread</code> e chamar o método <code>void start()</code> dessa classe.
===Definindo o código===
<source lang="java">▼
O código que será executado por uma ''thread'' deve ser definido no método <code>void run()</code> da interface <code>[https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html java.lang.Runnable]</code>.
</source>▼
class Executavel implements Runnable {
▲<source lang="java" highlight="4">
public Segmento(String nome) {▼
}▼
@Override
public void run() {
System.out.println(Thread.currentThread());
}
}
▲</source>
Já que <code>Runnable</code> é uma interface funcional, é possível reescrever o código acima da seguinte forma.
<source lang="Java" highlight="1,4">
Runnable runnable = () -> System.out.println(Thread.currentThread());
</source>
===Instanciando a classe Thread===
class EstudandoThreads {
Runnable runnable = () -> System.out.println(Thread.currentThread());
Thread thread = new Thread(runnable);
▲ }
}
</source>▼
===Executando a thread===
<source lang="Java" line start=3 highlight="6">
class EstudandoThreads {
public static void main(String[] args) {
Runnable runnable = () -> System.out.println(Thread.currentThread());
Thread thread = new Thread(runnable);
thread.start();
}
}
</source>
Thread[Thread-0,5,main]
<code>String name</code> especifica um nome para a ''thread''. Caso não especificado no construtor o nome da ''thread'' será criado automaticamente derivado do modelo '''Thread-0''', onde '''0''' é um número incrementado a cada nova '''thread''' criada sem definição de nome.
===Evite ThreadGroup===
<source lang="Java">
Thread(ThreadGroup group, Runnable target)
<code>[https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadGroup.html java.lang.ThreadGroup] group</code> inclui a ''thread'' em um grupo de ''threads''. A utilização de <code>ThreadGroup</code> deve ser evitada<ref>Item 73 - JOSHUA, Bloch. Effective Java. 2.ª edição, 2009. </ref>.
▲<source lang="java">
▲</source>
==Métodos estáticos==
|