你已经拿到第一个资源
你需要第二个资源
但你只等待10秒
10秒后拿不到你就放弃你拿到的第一个资源sleep(10*1000)的话,你只是等待,资料来了你也不会去拿
wait()的话,你就放弃了原来资源求教

解决方案 »

  1.   

    LinkedBlockingQueue#poll(long, TimeUnit)
      

  2.   


    sleep(10000);if(拿到了第二个资源){
        ....
    }else{
        放弃第一个资源
    }
      

  3.   

    另外启动一个线程用来获取资源,而当前线程就等10秒,10秒后取得资源,不管资源是null还是有对象
      

  4.   

    使用 java.util.concurrent.Future 
    V get(long timeout, TimeUnit unit)
    Waits if necessary for at most the given time for the computation to complete, and then retrieves its result, if available.
      

  5.   

    我觉得应该是启动另外一个线程B去获取资源,,原线程睡眠,线程B在10秒内可以多次获取资源,一旦超过10秒,不管有无获取到,都notify原线程--signature------------------------------------
    http://www.lunwenwa.com/