簡體   English   中英

在多個線程之間共享公共數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM