Java并发编程之线程管理(基本线程同步2)(二)

2014-11-24 00:34:53 · 作者: · 浏览: 1
r is false Sellingipad1 15 number is true Sellingipad1 15 number is true Sellingipad1 15 number is true Sellingipad1 15 number is false Sellingipad1 15 number is true Sellingipad1 15 number is true Sellingipad1 15 number is false Sellingipad1 15 number is false Sellingipad1 15 number is true Sellingipad1 15 number is true Sellingipad1 15 number is true Sellingipad1 15 number is true The number of ipad 1 is : 110 Thenumber of ipad 2 is : 40

假如我们要使用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;
        }
    }
}