乙個鎖內部可以有多個condition,即有多路等待和通知,可參考jdk1.5的lock和condition實現的可阻塞佇列的應用案例,在傳統的執行緒機制中乙個監視器物件上只能有一路等待和通知,要想實現多路等待和通知,必須巢狀使用多個同步監視器物件.
使用condition可簡單實現多路等待通知
附jdk1.5中demopublic class twoconditioncommunication
}}).start();
for (int i = 1; i <= 50; i++)
} static class business catch (exception e)
}for (int j = 1; j <= 10; j++)
shouldsub = false;
condition_main.signal();
} finally
} public void main(int i) catch (exception e)
}for (int j = 1; j <= 20; j++)
shouldsub = true;
condition_sub.signal();
} finally
} }}
class boundedbuffer finally
}public object take() throws interruptedexception finally
} }
深度解析 Condition實現原理
condition指的就是conditionobject,是aqs的乙個內部類。conditionobject的原理是基於aqs的node內部類維護了兩個佇列,乙個等待佇列,乙個同步佇列 乙個是單向佇列,乙個是雙向佇列。如果某個執行緒呼叫了await方法之後,就會使當前執行緒進入到等待狀態,原理就是...
Condition的介紹與使用
condition是lock對應synchronize的wait,notify等執行緒互相作用時而使用的等待通知機制,condition有著比synchronize更加靈活的用法,實現的功能也更多,通俗的可以說是synchronize只用乙個condition,而lock可以使用多個conditio...
Lock和Condition物件的使用
condition的await 方法 void await throws interruptedexception導致當前執行緒等到發訊號或interrupted 在所有情況下,在此方法返回之前,當前執行緒必須重新獲取與此條件相關的鎖。當執行緒返回時,它保證保持此鎖。實現兩個執行緒交替執行的案例 c...