java在多个线程之间共享公共数组
我试图用Java实现一个2阶段资源锁死锁预防算法。在多次尝试之后,我决定创建一个SimpleProcess类,该类实现可运行接口,该接口将充当我的线程。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.");
}
}
我的主类将包含一个变量,该变量包含每个资源的锁定状态。这个变量被实现为final Lock[] locked_res = ReentrantLock[nr]
。我需要的帮助是找到一种共享同一变量的方法,该变量的值可以由每个线程更改,以便在所有线程(SimpleProcess实例)之间共享
# 1 楼答案
可以使用volatile关键字进行多线程共享