小编Pat*_*cki的帖子

在 ArrayList 上工作的两种方法的同步

我有Sum类、Creator类、Item类和Main。该造物主创造随机物品,并将它们添加到一个ArrayList这是在项目类。该求和类读取项目并总结所有的重量。在Main类中,我从多个线程CreatorSum 开始。这两个类都实现了Runnable并覆盖了 run 方法。在创建 200 个项目后,将在控制台中打印。

如何同步这些方法?当我启动线程时,Sum 中的方法首先结束并返回权重 0,然后创建 40 000 个随机项目。我将创建项目,同时对它们的所有权重求和,最后返回创建的项目数量和所有项目的权重。

求和类方法:

@Override
    public synchronized void run() {

        for(Towar x: Towar.list){
            try {
                Thread.currentThread().wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            counter++;
            sum+=x.getWaga();
            if(counter%100==0){
                System.out.println("Sum of "+counter+" items");
            }
        }
        System.out.println("Total weight of Items: "+sum);
    }
Run Code Online (Sandbox Code Playgroud)

创建者类方法:

@Override
    public void run() {
        reader=new Scanner(text);
        while(reader.hasNextLine()){
            counter++; …
Run Code Online (Sandbox Code Playgroud)

java multithreading synchronization arraylist runnable

4
推荐指数
1
解决办法
62
查看次数