Ir ao conteúdo

Daniel Ferreira Costa

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

1
  1. Obrigado, deu certo, está atualizando o valor. Mas tem algumas incoerências. [Fabrica]Numero atual na bilheteria: 13 [Comprador 2]Numero atual na bilheteria: 12 [Comprador 1]Numero atual na bilheteria: 11 [Comprador 3]Numero atual na bilheteria: 10 [Comprador 4]Numero atual na bilheteria: 9 [Comprador 5]Numero atual na bilheteria: 8 //Até aqui deu certo [Fabrica]Numero atual na bilheteria: 6 //Mas aqui o valor devia ser 11 [Comprador 4]Numero atual na bilheteria: 4 [Comprador 5]Numero atual na bilheteria: 3 [Comprador 3]Numero atual na bilheteria: 4 [Comprador 2]Numero atual na bilheteria: 6 [Comprador 1]Numero atual na bilheteria: 6 [Fabrica]Numero atual na bilheteria: 5 Como faz para apenas um acessar a região critica por vez?
  2. 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(); } //} } }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...