問題陳述: - //這是一個示例,實際陣列尺寸很大的靜態變量的使用,同時使用叉加入
假設有A級
public class A{
public static int aa[]=new int[5];
public computeaa(){
for(int i=0;i<5;i++)
aa[i] = useaa(i);
}
//this below function can compute aa[i] value
public int useaa(int i){
if(i<=0)
return 1;
if(aa[i]!=0)
return aa[i];
else
return useaa[i-1]+useaa[i-2];
}
}
而且RecursiveAction B類
@Override
protected void compute() {
// TODO Auto-generated method stub
A z=new A();
A.computeaa();
}
public static void main(String[] args) {
List<B> tasks =new ArrayList<B>();
for(int i=1; i<=2; i++){
//There is 2 fork will created
B =new B();
tasks.add(B);
B.fork();
}
if (tasks.size() > 0) {
for (B task : tasks) {
task.join();
}
}
}
懷疑?
假設叉1計算靜態變量AA [2],並且假設當叉2將計算AA [2],可以在此叉2得到的值AA [2],其通過與fork1或計算它會單獨計算?
據我瞭解,fork 2在某些情況下很容易訪問fork1的aa,假設fork 2想要計算aa [3],它可以得到已經由fork 1計算出來的值。但是問題是假設fork 1將嘗試計算aa [4],計算aa [4],它需要aa [3],已經計算出叉1,但如果fork 1試圖獲得aa [3],它可能會有可能,但偶然它會得到訪問權叉1的aa [3],這是不計算...再次造成一團糟。
我很謎題叉聯接好心幫
有簡單的問題,我想計算一些陣列所使用的同一個班級,但是在建立一個以上的對象我想使用相同的數組,這是由其他對象計算,以便減少我的計算時間。
如何複製或獲取該數組到另一個對象,以便該對象不需要計算?
如何使用['AtomicIntegerArray'](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicIntegerArray.html)? –
提示:當您花時間爲我們創建[mcve]時:請遵循遵循Java命名約定的正確有意義的名稱。其他任何東西都會顯着降低您爲我們組合的源代碼的價值。含義 - 單獨使用a和aa和useaa會使您的代碼幾乎無法理解。 – GhostCat
除此之外:沒有人告訴過你,使用靜態在oop中通常是不好的做法嗎? – GhostCat