小编vin*_*001的帖子

从 Callable 类调用常用方法的最佳方法?

我使用 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)

java timestamp date callable synchronized

-2
推荐指数
1
解决办法
78
查看次数

标签 统计

callable ×1

date ×1

java ×1

synchronized ×1

timestamp ×1