Programação concorrente
Por: neaime02 • 6/5/2015 • Trabalho acadêmico • 750 Palavras (3 Páginas) • 205 Visualizações
Etapa 1
Código Fonte:
Classe Principal
package atpsetapa1;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Principal extends Thread{
static List lista = new ArrayList();
@Override
public void run(){
while(!lista.isEmpty()){
Numero pedido = (Numero) lista.get(0);
lista.remove(pedido);
try {
sleep(1000);
File arquivo = new File("teste_arquivo_1000.txt");
try( FileWriter fw = new FileWriter(arquivo,true) ){
fw.write("\n"+Thread.currentThread().getName() + " - "+ pedido.getValor()+" valor consumido");
fw.flush();
fw.close();
} catch(IOException ex){
System.out.println("Erro ao gravar");
}
System.out.println(Thread.currentThread().getName() + " - "+ pedido.getValor()+" valor consumido");
} catch (InterruptedException m) {
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, m);
}
}
}
public static void main(String[] args) throws InterruptedException, IOException
{
//Aqui muda o numero de Thread
for (int i = 0; i < 5000; i++) {
lista.add(new Numero(i,"descricao "+i));
}
//marca o início do tempo de execução
long inicio = System.nanoTime() / 1000000;
//quantidade de threads a serem criadas, conforme especificar
Principal[] threads = new Principal[1000];
for (int i = 0; i < threads.length; i++) {
threads[i] = new Principal();
threads[i].setName("Thread:
...