[英]mutual exclusion using thread of java
我有這個代碼,這是互斥算法
turn = 0 // shared control variable
while (turn != i);
// CS
turn = (turn + 1) % n;
我知道線程如何工作,但實際上我在使用Java中的線程方面並不弱,因此請提出任何建議以幫助我了解如何使用Java線程在真實代碼中進行轉換
對不起,我的英語不好
互斥通常以最簡單的形式通過將方法標記為同步來實現。 通過將對象的方法標記為已同步,一次只能有一個線程執行該對象的方法。 擁有該方法的對象是監視器。
另外,您可以在代碼本身中定義一個同步塊,將對象傳遞給它以充當監視器。
我相信您可以通過定義具有您想要執行的邏輯的Runnable對象,以更簡單的方式實現相同的目的。 在需要互斥的地方,定義一個同步方法。
然后,可以將該Runnable實例傳遞給所需的多個線程。 由於它們都引用相同的Runnable,因此對同步方法的調用將是互斥的。
這不是唯一的方法,但應該是您所追求的。 希望這可以幫助。
此代碼不是互斥的,請考慮以下執行-
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.