我有一段代码,执行时间似乎比较长。我需要尽可能地减少执行时间。
基本上,这段代码执行以下操作。我创建了一个大小为[10][10][10]的对象数组。该对象包含以下数字列表:
class MyClass{
ArrayList<Integer> numberList;
public MyClass(){
numberList= new ArrayList <Integer> ();
}
}
MyClass storage[][][] = new MyClass[10][10][10];
我接下来有以下代码,可以向列表中添加数字。
for(int i =0; i < 200000;i++){
for(int j = 0; j < 10; j++){
for(int k = 0; k < 10; k++){
for(int l = 0; l < 10; l++){
storage[j][k][l].numberList.add(i);
}
}
}
}
我相信绝大部分执行时间来自以下代码行:
storage[j][k][l].numberList.add(i);
更具体地说,它是 .add(i) 方法。
我对Java还不太熟悉,只熟悉C++。如果ArrayList类似于C++中的列表,那么在末尾添加元素肯定需要很少的CPU时间吧?难道仅仅因为我执行了很多次添加操作(可能有一百万次)?
另外一个我想问的问题是,我能否通过使用线程来加速这个过程?(假设有4个线程的双核处理器)我想创建4个线程,每个线程处理50000个块。然而,我不确定如何进行同步。我想我必须在storage[][][]上进行互斥。我需要写什么呢?
synchronized(storage)
这样可以吗?
synchronized(storage[j][k][l])
非常感谢您的帮助。
祝好!