@Victtor_Freitas escreveu:
Galera, gostaria da ajuda de vocês, estou tentando implementar um código utilizando semaphore.
import java.util.concurrent.Semaphore; //package primeiroprograma; //Colocado pelo NetBeans /** * * @author Victtor Araújo Freitas */ public class PrimeiroPrograma {//Nome da Classe int contador=0;//Contador que irei utilizar, como se fosse uma variavel global Semaphore semaforo; public PrimeiroPrograma(){//Um metodo try {//Necessário para o uso do sleep, pois é um tratamento caso haja interrupção Semaphore semaforo = new Semaphore(1); testandoThread td = new testandoThread();//Crio a Thread1 outraThread tds = new outraThread();//Crio a Thread 2 td.start();// inicio a primeira Thread //testandoThread.sleep(100);//Essa parte é para solucionar o problema, com esse sleep as threads sicronizam, chegando ao resultado de 7000000 tds.start();//Inicio a segunda Thread testandoThread.sleep(100);//Sleep<- Colocando pra dormir para que de tempo das threads executarem System.out.println(contador);//Imprimir na tela o valor da variavel contador } catch (InterruptedException ex) {} } public static void main(String[] args) { new PrimeiroPrograma(); } public class testandoThread extends Thread{ public void run(){ System.out.println("Comecei Thread 1"); int i; for(i=0;i<1000000;i++){ try{ semaforo.acquire(); contador= contador+5; } catch(InterruptedException e){ //e.printStackTrace(); } finally{ semaforo.release(); } } System.out.println("Terminei Thread 1"); } } public class outraThread extends Thread{ public void run(){ System.out.println("Comecei Thread 2"); int i; for(i=0;i<1000000;i++){ try{ semaforo.acquire(); contador= contador+2; } catch(InterruptedException e){ // e.printStackTrace(); } finally{ semaforo.release(); } } System.out.println("Terminei Thread 2"); } } }
ERRO:
Exception in thread "Thread-0" java.lang.NullPointerException
at PrimeiroPrograma$testandoThread.run(PrimeiroPrograma.java:38)Mas ta dando erro e não sei bem o que devo mudar para funcionar.
Mensagens: 2
Participantes: 2