Uma de threads

7 respostas
marciolx

a) compile error?
b) runtime error?
c) roda e imprime “A”?
d) roda e imprime “B”?
e) roda e imprime “A” e “B” (sem ordem determinada)?
f) roda e não imprime nada?
g) roda e pode tanto imprimir como não imprimir nada?

class A extends Thread {
	public A (Runnable r) { super(r); }
	public void run() {
		System.out.println("A");
	}
}

class B implements Runnable {
	public void run() {
		System.out.println("B");
	}
	public static void main(String [] args) {
		new A(new B()).start();
	}
}

7 Respostas

Frank

Acho que é a letra C (roda e imprime “A”). :wink:
Acertei ? :roll:

marciolx

acertou.

alguém poderia explicar o porquê?

duardor

Ueh essa nao tem segredo nao…
quando vc faz new A vc cria um objeto do tipo A e logo depois vc chama start q faz o metodo deste objeto rodar…

marciolx

e o que esta linha faz?

public A (Runnable r) { super®; }

F

e o que esta linha faz?

public A (Runnable r) { super®; }

Esta linha sobrescreve o construtor herdado de Thread que recebe um objeto Runnable.
Dê uma olhada na API da classe Thread q lá tem a explicação deste construtor

ricardolecheta

1 - new A(new B()).start();
imprime “A”

2 - new Thread(new B()).start();
imprime “B”

não entendi ainda porque no com “new A” imprime “A” :?: :?:
se A extends Thread, e tb tem um construtor que recebe um Runnable,
porque ao chamar o start() não executa o run() da classe B que implementa a Runnable :?:

P

“ricardolecheta”:

não entendi ainda porque no com “new A” imprime “A” :?: :?:
se A extends Thread, e tb tem um construtor que recebe um Runnable,
porque ao chamar o start() não executa o run() da classe B que implementa a Runnable :?:

Qnd vc chama o start(), o método run da classe q vc chamou é executado, nesse caso da “A”. O construtor nada tem a ver com o run(), acho q aquele construtor só está lá para confundir.

Criado 5 de agosto de 2003
Ultima resposta 12 de ago. de 2003
Respostas 7
Participantes 6