[英]Sharing common array between multiple threads
我正在嘗試在 Java 中實現 2 階段資源鎖死鎖預防算法。 經過多次嘗試,我決定創建一個 SimpleProcess class,它實現將充當我的線程的 Runnable 接口。 SimpleProcess 的結構有點像這樣:
public class SimpleProcess implements Runnable
{
private int pid; // process id
private ArrayList<Integer> requiredRes; // originally required resources
private int[] remainingRes; // resources that are still required
private boolean status; // whether process is completed running or not
public SimpleProcess() {
pid = 0;
status = false;
}
public SimpleProcess(int id, ArrayList<Integer> res) {
pid = id;
requiredRes = res;
remainingres = requiredRes;
status = false;
}
public int getPid() {
return pid;
}
public int[] getRequiredRes() {
return requiredRes;
}
public int[] getRemainingRequiredRes() {
return remainingRes;
}
public boolean getStatus() {
return status;
}
public void run() {
System.out.println("Process " + pid + " started.");
// do something
System.out.println("Process " + pid + " is complete.");
}
}
我的主要 class 將包含一個變量,該變量包含每個資源的鎖定狀態。 這個變量被實現為final Lock[] locked_res = ReentrantLock[nr]
。 我需要幫助的是找到一種方法來共享這個相同的變量,每個線程可以更改其值,以便在所有線程(SimpleProcess 實例)之間共享。
您可以使用 volatile 關鍵字進行多線程共享
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.