在论坛上看到这样一个题目:
MyClass中有4个方法:func1()/func2()/func3()/func4,有多个线程要同时访问这4个方法,要求如下: 
1. func1()和func2()不能同时执行 
2.func3()和func4()不能同时执行 
3.func1()/func2()其中的一个与func3()/func4()其中的一个能同时执行 
自己也写了下不知道自己理解的对不对,所以想听下大家的意见,是怎么理解这个题的要求的(最好用代码说明呵呵!可以参考一下!谢谢!)

解决方案 »

  1.   

    where is your code?不然怎么给意见
      

  2.   

    顶三楼的;核心点:每个对象都有其intrinsic lockfunc1()和func2()持有同一object o1的锁(func1()和func2()不能同时访问);
    func3()和func4()持有同一object o2的锁(func3()和func4()不能同时访问);代码如下:
    public class LockTest{
    private final Object o1;
    private final Object o2;public void func1(){
      syncronized(o1){
        //some code here
      }
    }public void func2(){
      syncronized(o1){
        //some code here
      }
    }public void func3(){
      syncronized(o2){
        //some code here
      }
    }public void func4(){
      syncronized(o2){
        //some code here
      }
    }}
      

  3.   

    func1()/func2()其中的一个与func3()/func4()其中的一个由于持有不同object的锁,故能同时执行