TestKiller - Questão 14

6 respostas
deyvid
Which two are possible result? (Choose two)

public class Threads1 {
	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 static void main( String[] args ) {
		new Threads1().go();
	}
	
	public void go() {
		Runnable r1 = new Runner();
		new Thread( r1 ).start();
		new Thread( r1 ).start();
	}
}
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 

Resp..: A, C

A C tudo bem mas a letra “A”?! por que?

Desde já agradeço

6 Respostas

A

Seria pq a 2ª thread iniciou quando x estava em 4, e terminou antes da 1ª imprimir o 6?

kaduzick

Cara é o seguinte:

(Questão difícil hein …)

for( int i = 0; i < 4; i++ ) {   
                current = x;  
                System.out.println( current + " " );   -- A primeira thread parou aqui ao imprimir 4
                x = current + 2;   
            }

A segunda thread continuou com o valor de X = 4 e fez sua execução completa. (4, 6, 8 e 10)
Quando a primeira thread voltou ela estava parada em um lugar onde o valor de current era 4 … aí ela acrescentou 2 e rodou mais uma vez imprimindo o último 6.

Se a primeira thread tivesse parado antes de imprimir o 6, a segunda thread teria começado com 6.

deyvid

Isso é interessante! Isso quer dizer que o método run pode parar em qualquer ponto! Vivendo e apredendo!.

Isso que eu chamo de pegadinha! Valeu Mesmo!!! :shock: :shock: :shock: :shock: :shock: :evil: :evil: :evil: :evil: :evil: :twisted: :twisted: :twisted: :twisted: :!: :!: :!: :!: :!:

A

Mas essa dava pra acertar por eliminação não?
As alternativas B, D, E são muuuuuuuito estranhas pra estarem certas rsrsrs

deyvid

Mas essa dava pra acertar por eliminação não?
As alternativas B, D, E são muuuuuuuito estranhas pra estarem certas rsrsrs

Sim dava! Mas fazer testes, pesquisar, buscar resposta e perguntar (por que não?) são atitudes muito mais educativas do que usar esse pejorativo “jeitinho brasileiro” que insiste em grudar em nós.

“rsrsrs” pra você também.

deyvid

:?

Criado 27 de novembro de 2009
Ultima resposta 30 de nov. de 2009
Respostas 6
Participantes 3