我使用 Callable 类型的 java 类(最多并行 200 个),它调用工具类的方法(集中公共方法),并且我注意到如果该方法不“同步”,我会收到错误。我尝试将此方法移至 Callable 类,但问题仍然存在。
使用“同步”,它可以工作,但我担心这种设置会降低性能,因为并行启动的任务不能完全独立,并且会相互减慢,而不是以最大速度运行。
实现这一点的最佳方法是什么?
下面(简化)摘自我的代码。如果没有“同步”,只要数据比较不处理日期,似乎就不会出现错误。但是,如果该方法比较日期(实际上,更准确地说,是 java.util.Date 和 Timestamp 的混合,我将其转换为日期,然后转换为字符串),则会出现错误。但该方法工作正常,因为一旦我切换到同步,就没有错误......
public class CompareTableTF {
...
public void compareTable(...) {
...
while (...) {
try {
myTask = new CompareTableTask(...);
completion.submit(myTask);
}
catch (InterruptedException | ExecutionException e) {...}
...
}
}
Run Code Online (Sandbox Code Playgroud)
public class CompareTableTask implements Callable<Integer> {
private List<Object> row1;
public CompareTableTask(List<Object> row1) {
this.row1=row1;
}
@Override
public Integer call() {
int result=1;
List<Object> row2=getRowToCompare(...);
if (isEqual(row2)) {
result=0;
}
return result;
}
private boolean …Run Code Online (Sandbox Code Playgroud)