Java arraylist 多线程_如何在Java中使用带有ArrayList的多线程

你好 ,

我有一个可以完美运行的程序,不幸的是,我有一些计算需要很多时间,几分钟..

我的目标是使用多线程来加速耗时的部件.

在此示例中,我给出了我应该并行化的部分的原型

public static ArrayList createListOfObject2(ArrayList mylist) {

ArrayList listToReturn = new ArrayList<>();

Object2 object2;

for (int i = 0; i < mylist.size(); i++) {

for (int j = 0; j < mylist.size(); j++) {

object2 = heavyCalcul(mylist, i, j);

listToReturn.add(object2);

}

}

return listToReturn;

}

private static Object2 heavyCalcul(ArrayList mylist, int i, int j) {

int weight = MyCalculator.getInstance().calcul(mylist.get(i),mylist.get(j));

Object2 Object2 = new Object2(weight);

return Object2;

}

如您所见,该方法

public static ArrayList createListOfObject2(ArrayList mylist)

获取Object1的列表,并应创建另一个object2列表.

我进行了二次循环,每次创建由两个对象形成的object2时,它应该花费O(n?)次.

要获得更大的清单,需要花费很长时间.

因此,我应该在哪里使用应该使用的多重列表和夹心类型的列表.

第二个问题是MyCalculator类是一个单例类,并且我仅创建一个对象,并且我认为即使使用mulread读取,实际程序也不会受益于mulread读取.

使用多重阅读应遵循哪些规则?

非常感谢.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值