Java/Thread: diferenças entre revisões
[edição verificada] | [revisão pendente] |
Conteúdo apagado Conteúdo adicionado
m <source> -> <syntaxhighlight> (phab:T237267) |
|||
Linha 8:
A ''thread'' <code>main</code>, criada automaticamente pela JVM quando uma aplicação é iniciada, é responsável por executar o código inicial da aplicação (comumente inserido no corpo do método <code>public static void main(String... args)</code>).
<
public static void main(String... args) {
Thread t = Thread.currentThread();
Linha 15:
System.out.println("Nome: " + nome + ", id: " + id);
}
</syntaxhighlight>
Nome: main, id: 1
Linha 33:
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>.
<
class Executavel implements Runnable {
Linha 41:
}
}
</syntaxhighlight>
Já que <code>Runnable</code> é uma interface funcional, é possível reescrever o código acima da seguinte forma.
<
Runnable runnable = () -> System.out.println(Thread.currentThread());
</syntaxhighlight>
Uma vez que a classe <code>Thread</code> implementa <code>Runnable</code>, alternativamente é possível estender <code>Thread</code> e inserir o código em uma sobrescrita do método <code>void run()</code>.
<
class LinhaDeExecucao extends Thread {
Linha 58:
}
}
</syntaxhighlight>
===Instanciando a classe Thread===
Por meio de referência a <code>Runnable</code>.
<
class EstudandoThreads {
Linha 71:
}
}
</syntaxhighlight>
Por meio de instância de subclasse de <code>Thread</code>.
<
class EstudandoThreads {
Linha 96:
}
}
</syntaxhighlight>
O parâmetro <code>String name</code>, encontrado nos construtores <code>Thread(String name)</code> e <code>Thread(Runnable target, 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.
===Executando a thread===
<
class EstudandoThreads {
Linha 110:
}
}
</syntaxhighlight>
Thread[Thread-0,5,main]
Linha 122:
Então evite os seguintes construtores da classe <code>Thread</code>.
<
Thread(ThreadGroup group, Runnable target)
Thread(ThreadGroup group, Runnable target, String name)
Thread(ThreadGroup group, String name)
</syntaxhighlight>
Bem como os métodos abaixo.
<
static int enumerate(Thread[] tarray)
static int activeCount()
final ThreadGroup getThreadGroup()
</syntaxhighlight>
==Métodos estáticos==
<
dumpStack()
getAllStackTraces()
Linha 146:
sleep(long millis, int nanos)
yield()
</syntaxhighlight>
==Métodos de instância==
<
checkAccess()
countStackFrames()
Linha 168:
setPriority(int newPriority)
setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)
</syntaxhighlight>
{{AutoCat}}
|