假如我们要使用synchronized的代码块来实现同步,只需要修改IPad类即可。修改后的IPadS类如下所示:
public class IPadS {
private longipad1Number;
private longipad2Number;
private finalObject ipad1Obj,ipad2Obj;
public IPadS(){
ipad1Number = 200;
ipad2Number = 200;
ipad1Obj = new Object();
ipad2Obj = new Object();
}
public longgetIpad1Number(){
return ipad1Number;
}
public longgetIpad2Number(){
return ipad2Number;
}
/**
* Sells the ipad 1 with the specifiednumber
* @param number
* @return
*/
public boolean sellIpad1(int number){
synchronized(ipad1Obj){
if(number <= ipad1Number){
ipad1Number -= number;
return true;
}
return false;
}
}
/**
* Sells the ipad 2 with the specifiednumber
* @param number
* @return
*/
public boolean sellIpad2(int number){
synchronized(ipad2Obj){
if(number <= ipad2Number){
ipad2Number -= number;
return true;
}
return false;
}
}
/**
* Returns the number of ipad 1.
* @param number
* @return true
*/
public boolean returnIpad2(int number){
synchronized(ipad2Obj){
ipad2Number += number;
return true;
}
}
/**
* Returns the number of ipad 2.
* @param number
* @return true
*/
public boolean returnIpad1(int number){
synchronized(ipad1Obj){
ipad1Number += number;
return true;
}
}
}