====== Experimentos em coordenação ====== Esta prática consiste em implementar alguns problemas clássicos de coordenação usando a linguagem Java. Um exemplo de criação de //threads// em Java está apresentado a seguir: public class MyThread extends Thread { int threadID; // construtor MyThread (int ID) { threadID = ID; } // corpo da thread public void run () { int i ; for (i = 0; i< 100 ; i++) System.out.println ("Hello from t" + threadID + "!") ; } // programa principal public static void main (String args[]) { // cria três threads MyThread t1 = new MyThread (1); MyThread t2 = new MyThread (2); MyThread t3 = new MyThread (3); // inicia as três threads t1.start (); t2.start (); t3.start (); } } ==== Soma multi-thread (50%) ==== Escrever um programa com //threads// que incrementam de forma concorrente um contador global inteiro. Use 100 threads, cada uma incrementando o contador 100.000 vezes. Construa uma solução simples, sem controle de concorrência, e outra com controle de concorrência através de um //mutex//. Compare os resultados obtidos em termos de exatidão do resultado e de velocidade de execução. ==== O Jantar dos filósofos (25%) ==== Implemente o problema do Jantar dos Filósofos descrito na aula passada; sem prevenção de impasses (solução básica) e com prevenção de impasses através do algoritmo do saleiro. ==== O Jantar dos selvagens (25%) ==== [[so:jantar_dos_selvagens]]