Pessoal… como muitos sabem Threads eh um negocio meio dificil de entrar na cabeca… parece que estou entendo bem mais que antes, mas essa ai me deixou doido. porque gera uma execao??
class Chicks{
synchronized void yack(long id){
for(int x = 1; x < 3; x++){
System.out.print(id + " ");
Thread.yield();
}
}
}
public class ChicksYack implements Runnable{
Chicks c;
public static void main(String[] ars){
new ChicksYack().go();
}
void go(){
c = new Chicks();
new Thread(new ChicksYack()).start();
new Thread(new ChicksYack()).start();
}
public void run(){
c.yack(Thread.currentThread().getId());
}
}
[code] class Chicks{
synchronized void yack(long id){
for(int x = 1; x < 3; x++){
System.out.print(id + " ");
Thread.yield();
}
}
}
public class ChicksYack implements Runnable{
static Chicks c; //É so bota como estático que roda na sussa, iria imprimir 8 8 9 9, se não tivesse lançado essa Excepetion acertaríamos com a resposta C. e E. do livro.
public static void main(String[] ars){
new ChicksYack().go();
}
void go(){
c = new Chicks();
new Thread(new ChicksYack()).start();
new Thread(new ChicksYack()).start();
}
public void run(){
c.yack(Thread.currentThread().getId());
}
} [/code]