有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    可以使用volatile关键字进行多线程共享