[RESOLVIDO]Prever Saida Thread

3 respostas
T

Estava fazendo um simulado e apareceu o seguinte codigo prevendo as seguintes saidas

public class Thread1 {
    int x = 0;
    public class Runner implements Runnable
    {
        public void run()
        {
            int current = 0;
            for(int i =0; i<4;i++)
            {
                current = x;
                System.out.println(current + ", ");
                x = current + 2;
            }
        }                               
    }
    
    
    public void go()
    {
        Runnable r1 = new Runner();
        new Thread(r1).start();
        new Thread(r1).start();
    }
    
    public static void main(String[] args)
    {
        new Thread1().go();
    }
}

A. 0,2,4,4,6,8,10,6
B. 0,2,4,6,8,10,2,4
C. 0,2,4,6,8,10,12,14
D. 0,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14
E. 0,2,4,6,8,10,12,14,0,2,4,6,8,10,12,14

As respostas corretas sao A e C mas nao entendi o porque e como e possivel prever a saida de duas threads se sao dois processos paralelos e independentes

Muito obrigado a todos desde ja!

3 Respostas

Laubstein_M_cio

Isto está longe de ser exato, é só pra mostrar que você tem a ideia de que a variavel x está sendo compartilhada, mas esse código está errado, x deve ser protegida, seja usando uma técnica de lock, volatile(jvm s2), check and swap etc…

ViniGodoy

http://www.guj.com.br/java/147205-duvida-com-thread-certificacaoresolvido#794114

T

Mais uma vez muito obrigado e desculpa não tinha visto que a mesma duvida ja foi postada por aqui :oops:

Criado 23 de maio de 2012
Ultima resposta 24 de mai. de 2012
Respostas 3
Participantes 3