问题陈述: - //这是一个示例,实际阵列尺寸很大的静态变量的使用,同时使用叉加入
假设有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