如何获取仅添加到一个数组的线程具有同步的整数列表

亚历克斯

我一直在尝试做一些简单的事情,例如将两个线程添加到一个arraylist中,但是由于某种原因,我无法使其正常工作。我有同步方法,并使用Collections.synchronized列表,但它仍然表明它正在打印出两个单独的数组。我写了本来应该是个简短的程序,以更好地理解运行两个线程来访问一个arrayList。如果有人能说明我犯了什么错误,将不胜感激!

这是主班

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class RunThreads {
    public static void main(String[] args) {
        ExecutorService executor = Executors.newCachedThreadPool();
        int[] numbers1 = {0, 2, 4, 6, 8};
        int[] numbers2 = {1, 3, 5, 7, 9};
        executor.execute(new ThreadToRun(numbers1));
        executor.execute(new ThreadToRun(numbers2));
        executor.shutdown();
    }
}

这是TheadToRun类:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ThreadToRun implements Runnable {
    List<Integer> list = Collections.synchronizedList(new ArrayList<Integer>());
    private int[] array;

    public ThreadToRun(int[] array) {
        this.array = array;
    }

    public void run() {
        list = adder(array);
        for(int i=0; i<list.size(); i++){
            System.out.print(list.get(i)+"("+i+")"); //print out the element at i and the index 
        }                                            //to see if there are two arrays with the same index
    }

    public  List<Integer> adder(int [] a){
        List<Integer> list = Collections.synchronizedList(new ArrayList<Integer>());
        for (int array : a) {
            synchronized(list){
                list.add(array);
            }
        }
        return list;
    }
}
JS

在这里,您将创建两个'TheadToRun'实例,每个实例都实例化一个新的list实例(如下所述)

List<Integer> list = Collections.synchronizedList(new ArrayList<Integer>());

同样在您的加法器方法中,您将执行以下操作:

List<Integer> list = Collections.synchronizedList(new ArrayList<Integer>());

这将再次创建一个新列表,并覆盖实例中的现有列表。

可能的解决方案:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ThreadToRun implements Runnable {
    List<Integer> list;
    private int[] array;

    public ThreadToRun(int[] array, List<Integer> list) {
        this.array = array;
        this.list = list;
    }

    public void run() {
        for (int array : a) {
            list.add(array);
        }
    }
}


import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class RunThreads {
    public static void main(String[] args) {
        ExecutorService executor = Executors.newCachedThreadPool();
        int[] numbers1 = {0, 2, 4, 6, 8};
        int[] numbers2 = {1, 3, 5, 7, 9};

        List<Integer> list = Collections.synchronizedList(new ArrayList<Integer>());

        ThreadToRun t1 = new ThreadToRun(numbers1, list);
        ThreadToRun t2 = new ThreadToRun(numbers1, list);

        executor.execute(t1);
        executor.execute(t2);
        executor.shutdown();

        // print the list out
        for(int i=0; i<list.size(); i++){
            System.out.print(list.get(i) + " found at location ("+i+")");
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将数组添加到列表并迭代以获取每个数组的第一个值?

来自分类Dev

将一个数组列表添加到另一个

来自分类Dev

将数组中的值添加到php中具有相同ID的另一个数组

来自分类Dev

将2个数组列表添加到一个2维数组中

来自分类Dev

将2个数组列表添加到具有相同索引值的1个数组列表中

来自分类Dev

如何在Javascript中将一个数组添加到另一个数组中?

来自分类Dev

如何将一个数组的元素添加到另一个数组

来自分类Dev

如何将一个数组中的值添加到另一个数组?

来自分类Dev

如何将一个数组添加到另一个数组以创建一个数组数组。(JS)

来自分类Dev

给定一个整数列表和一个索引列表,我该如何使用map将10添加到第一个列表中的特定元素?

来自分类Dev

如何将多维数组的键值添加到另一个数组

来自分类Dev

如何返回在具有10个随机整数的一个数组的最大整数?

来自分类Dev

根据值将属性从具有对象的一个数组添加到另一个对象

来自分类Dev

仅添加到词典中的一个列表

来自分类Dev

如何在python中将两个奇数列表添加到一个列表中?

来自分类Dev

将一个数组列表添加到另一个时出现StackOverflow异常

来自分类Dev

我如何遍历可能由另一个线程添加到的列表

来自分类Dev

如何将多个HTML表单的值添加到一个数组以发送

来自分类Dev

如何将前一个数组元素的值添加到当前元素

来自分类Dev

我在reactjs中有一个秒表,如何将每个数字添加到某种数组中以显示每个数字?

来自分类Dev

JavaScript:有条件地将JSON对象从一个数组添加到另一个数组

来自分类Dev

JavaScript:有条件地将JSON对象从一个数组添加到另一个数组

来自分类Dev

尝试使用reducer函数将一个数组中的所有值添加到JS中的另一个数组中

来自分类Dev

有条件地将数组作为变量添加到另一个数组中

来自分类Dev

如何使用simple_fields_for将链接仅添加到最后一个数据

来自分类Dev

如何使用ParallelStream将一个数组的每个元素添加到另一个数组的相应元素中?

来自分类Dev

如何将多个项目从一个数组添加到另一个数组

来自分类Dev

如何将一个数组添加到存在于mongodb对象中的另一个数组中

来自分类Dev

如何在javascript中将一个数组对象添加到另一个数组对象

Related 相关文章

  1. 1

    如何将数组添加到列表并迭代以获取每个数组的第一个值?

  2. 2

    将一个数组列表添加到另一个

  3. 3

    将数组中的值添加到php中具有相同ID的另一个数组

  4. 4

    将2个数组列表添加到一个2维数组中

  5. 5

    将2个数组列表添加到具有相同索引值的1个数组列表中

  6. 6

    如何在Javascript中将一个数组添加到另一个数组中?

  7. 7

    如何将一个数组的元素添加到另一个数组

  8. 8

    如何将一个数组中的值添加到另一个数组?

  9. 9

    如何将一个数组添加到另一个数组以创建一个数组数组。(JS)

  10. 10

    给定一个整数列表和一个索引列表,我该如何使用map将10添加到第一个列表中的特定元素?

  11. 11

    如何将多维数组的键值添加到另一个数组

  12. 12

    如何返回在具有10个随机整数的一个数组的最大整数?

  13. 13

    根据值将属性从具有对象的一个数组添加到另一个对象

  14. 14

    仅添加到词典中的一个列表

  15. 15

    如何在python中将两个奇数列表添加到一个列表中?

  16. 16

    将一个数组列表添加到另一个时出现StackOverflow异常

  17. 17

    我如何遍历可能由另一个线程添加到的列表

  18. 18

    如何将多个HTML表单的值添加到一个数组以发送

  19. 19

    如何将前一个数组元素的值添加到当前元素

  20. 20

    我在reactjs中有一个秒表,如何将每个数字添加到某种数组中以显示每个数字?

  21. 21

    JavaScript:有条件地将JSON对象从一个数组添加到另一个数组

  22. 22

    JavaScript:有条件地将JSON对象从一个数组添加到另一个数组

  23. 23

    尝试使用reducer函数将一个数组中的所有值添加到JS中的另一个数组中

  24. 24

    有条件地将数组作为变量添加到另一个数组中

  25. 25

    如何使用simple_fields_for将链接仅添加到最后一个数据

  26. 26

    如何使用ParallelStream将一个数组的每个元素添加到另一个数组的相应元素中?

  27. 27

    如何将多个项目从一个数组添加到另一个数组

  28. 28

    如何将一个数组添加到存在于mongodb对象中的另一个数组中

  29. 29

    如何在javascript中将一个数组对象添加到另一个数组对象

热门标签

归档