Baixe o app para aproveitar ainda mais
Prévia do material em texto
Exemplo de sincronização Vamos criar um programa para criar threads e coloca-las para dormir com um tempo aleatório entre 0 e 5 segundos. Vamos monitorar seu funcionamento, quer dizer, ao criarmos os threads, informaremos quanto tempo cada uma irá dormir. Ao acordar, cada uma deve sinalizar que acordou e terminar. class PrintThread extends Thread{ private int tempoDormir; public PrintThread(String nome){ super(nome); //adormece durante 0 a 5 segundos tempoDormir = (int)(Math.random()*5000); System.err.println("Nome: "+getName()+"; dormindo: "+tempoDormir); } public void run(){ try{ System.err.println(getName()+" Indo dormir"); Thread.sleep(tempoDormir); } catch (InterruptedException interruptedException){ System.err.println(interruptedException.toString()); } System.err.println(getName()+" Terminando de dormir"); } } public class TestarThread { public static void main(String args[]){ PrintThread thread1, thread2, thread3, thread4; thread1 = new PrintThread("Thread 1"); thread2 = new PrintThread("Thread 2"); thread3 = new PrintThread("Thread 3"); thread4 = new PrintThread("Thread 4"); System.err.println("\nIniciando as threads"); thread1.start(); thread2.start(); thread3.start(); thread4.start(); System.err.println("\nThreads iniciadas\n"); } } Observe a saída: run: Nome: Thread 1; dormindo: 637 Nome: Thread 2; dormindo: 1274 Nome: Thread 3; dormindo: 493 Nome: Thread 4; dormindo: 2744 Iniciando as threads Threads iniciadas Thread 1 Indo dormir Thread 3 Indo dormir Thread 2 Indo dormir Thread 4 Indo dormir Thread 3 Terminando de dormir Thread 1 Terminando de dormir Thread 2 Terminando de dormir Thread 4 Terminando de dormir CONSTRUÍDO COM SUCESSO (tempo total: 3 segundos) Observe que as quatro threads foram criadas na ordem, com tempos de sono diferentes. A saída da execução de cada thread já tira da ordem normal, visto que foi dada pelo escalonador. Mas, como o tempo dormindo é bem diferente, a thread 3, que dormiu 493 milisegundos acorda primeiro, seguindo da 1, 2 e finalmente 4. Observe também que o tempo total de execução do programa foi de 3 segundos.
Compartilhar