当前位置:编程学习 > JAVA >>

关于线程实现:如果等待10秒拿不到另一个资源,放弃当前资源

你已经拿到第一个资源
你需要第二个资源
但你只等待10秒
10秒后拿不到你就放弃你拿到的第一个资源

sleep(10*1000)的话,你只是等待,资料来了你也不会去拿
wait()的话,你就放弃了原来资源

求教 --------------------编程问答-------------------- 帮你顶下,坐等高手。 --------------------编程问答-------------------- wait(10*1000) --------------------编程问答-------------------- LinkedBlockingQueue#poll(long, TimeUnit) --------------------编程问答-------------------- 新手见解,可以弄notify --------------------编程问答--------------------
sleep(10000);

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

--------------------编程问答-------------------- 另外启动一个线程用来获取资源,而当前线程就等10秒,10秒后取得资源,不管资源是null还是有对象 --------------------编程问答-------------------- 使用 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. --------------------编程问答-------------------- 我觉得应该是启动另外一个线程B去获取资源,,原线程睡眠,线程B在10秒内可以多次获取资源,一旦超过10秒,不管有无获取到,都notify原线程







--signature------------------------------------
http://www.lunwenwa.com/
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,