Desculpa a pergunta, sou novo em java.
Estou tentando usar threads para acessar o mesmo local, e tenho um variavel global (na verdade não sei se existe o conceito de variável global em java).
De toda forma, eu tenho uma variável NIngressos que começa igual a 10. O que eu quero é ir atualizando o valor dessa variável...
A thread 1, que eu chamo de FABRICA adiciona 3 ao NIngressos, e todas as outras threads diminuem 1 o numero de NIngressos.
O que eu gostaria é que o resultado saisse dessa forma: Numeros de Cartelas Inicial: 10
[Fabrica]Numero atual de: 13
[Comprador 1]Numero atual de: 12
[Comprador 2]Numero atual de: 11
[Comprador 3]Numero atual de: 10
[Comprador 4]Numero atual de: 9
[Comprador 5]Numero atual de: 8
Ou seja, que NIngressos seja atualizado. Mas na verdade o que acontecesse é o seguinte:
Numeros de Cartelas Inicial: 10
[Fabrica]Numero atual de: 13
[Comprador 1]Numero atual de: 9
[Comprador 2]Numero atual de: 9
[Comprador 3]Numero atual de: 9
[Comprador 4]Numero atual de: 9
[Comprador 5]Numero atual de: 9
É como se todos só tivessem acesso ao valor inicial de NIngressos, e que o valor não vai atualizando.
Código:
package com.company;
public class TUDO_EM_UM extends Thread {
public int NIngressos=10;
public static void main(String[] args) throws Exception{
System.out.println("Numeros de Cartelas Inicial: 10");
TUDO_EM_UM time1 = new TUDO_EM_UM("Fabrica");
TUDO_EM_UM time2 = new TUDO_EM_UM("Comprador 1");
TUDO_EM_UM time3 = new TUDO_EM_UM("Comprador 2");
TUDO_EM_UM time4 = new TUDO_EM_UM("Comprador 3");
TUDO_EM_UM time5 = new TUDO_EM_UM("Comprador 4");
TUDO_EM_UM time6 = new TUDO_EM_UM("Comprador 5");
time1.start();
time2.start();
time3.start();
time4.start();
time5.start();
time6.start();
}
public TUDO_EM_UM(String id) throws InterruptedException{
super(id);
}
public void run(){
//while(true){
if(getName()=="Fabrica")
this.NIngressos=NIngressos+3;
else
this.NIngressos=NIngressos-1;
System.out.println("["+getName()+"]Numero atual de: "+NIngressos);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//}
}
}