Documente Academic
Documente Profesional
Documente Cultură
ilo.rivero@anhanguera.com
Grupos de Threads
public class GroupTest {
public static void main(String args[]) {
ThreadGroup group = new ThreadGroup("Sleepers"); // Cria grupo
for (int i=0; i<10; i++) {
new Thread(group,"Sleeper"+i) {
public void run() {
System.out.println(getName() + " iniciada.");
try {
sleep(10000);
} catch (InterruptedException ie) {
System.out.println(getName() + " interrompida.");
}
}
}.start();
}
try {
Thread.sleep(5000);
} catch (InterruptedException ie) {}
group.interrupt(); // Interrompe todas as threads do grupo
}
}
ThreadSleep
public class ThreadSleep extends Thread {
private long tempo = 0;
try {
sleep(tempo);
System.out.println(getName() + " acordou.");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String args[]) {
for (int i=0; i<10; i++)
// Cria e executa as Threads
Scheduler
import java.util.concurrent.*;
public class ScheduleThread extends Thread {
public void run() {
System.out.println(getName() + " executada.");
}
public static void main(String args[]) {
ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
for (int i=0; i<10; i++) {
long tempo = (long) (Math.random()*10000);
System.out.println("Thread-" + i + " ser executada em "+ tempo + "ms.");
exec.schedule(new ScheduleThread(), tempo, TimeUnit.MILLISECONDS);
}
exec.shutdown();
}
}
ThreadLocal
public class ThreadLocalTest extends Thread {
static ThreadLocal valorLocal = new ThreadLocal();
static int contador = 0;
public void run() {
System.out.println(getName() + ": valorLocal = " + contador);
valorLocal.set(new Integer(contador++));
try {
sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
int valor = ((Integer)valorLocal.get()).intValue();
System.out.println(getName() + ": valorLocal = " + valor);
}
public static void main (String args[]) {
for (int i =0; i<10; i++)
new ThreadLocalTest().start();
}
}
Atividade
Escreva um relatrio sobre os 4 cdigos apresentados, respondendo s seguintes
questes:
1.
2.
3.
Explique como funciona Java Executors e qual a sua utilidade no cdigo ScheduleThread
4.
Explique como a varivel valor no alterada pelas vrias threads no cdigo ThreadLocal.
5.
Modifique o cdigo para que ela seja alterada por todas as threads.
Atividade
Enviar para:
ilorivero@live.com
Assunto: Atividade Prtica Gerncia de Threads
Anexar o relatrio com o cdigo no texto
Valor: 0,5 ponto extra