Olá !!!
Alguém poderia me ajudar explicando o código abaixo.
a thread "Main" excuta o seguinte trecho de código, "s.setPrice(200);", não é verdade ??
Quando uma thread obtém o lock de um objeto significa que as outras threads não
poderão executar os outros métodos sincronizados daquele objeto ???
public class Master{
boolean bContinue=false;
public static void main(String argv[]){
Master m = new Master();
m.go();
}
public void go(){
Slave s = new Slave(this);
Thread t1 = new Thread(s);
t1.start();
while(bContinue==false){}
s.setPrice(200);
}
}
class Slave implements Runnable{
int iPrice =100;
Master master;
Slave(Master m){
master=m;
}
synchronized public void setPrice(int iM){
iPrice=iM;
}
synchronized public void run(){
master.bContinue=true;
while(true){
System.out.println(iPrice);
}
}
}
o resultado exibido é sempre "100"
até mais
