欢迎光临
我们一直在努力

ArrayList并发问题

并发编程主要影响的操作的原子性和数据的可见性

  • 操作的原子性 一个操作可能分成许多步骤,在单线程的情况下,这些步骤执行不会被影响。 并发情况下,如果没有保证操作的原子性,那么这些操作执行到一半会可能被其他线程所影响。这会导致1. 并发修改异常(ConcurrentModificationException)2. 数据不一致性3. 索引错位等问题。

  • 数据的可见性 可见性指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。 由于每个线程都有一个自己的工作内存,工作内存和主内存之间需要通过 store 和 load 等进行交互。这就会导致一个线程修改变量值后没有及时刷到主存,另一个读取的变量值不是期望值的情况。

ArrayList并发实验

  • 并发修改异常
  • public class Main {

    public static void main(String[] args) throws IOException, InterruptedException {


    ArrayList<Integer> list = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,8));
    Thread thread = new Thread(new Runnable() {


    @Override
    public void run() {


    Iterator<Integer> iterator = list.iterator();
    while(iterator.hasNext()){


    System.out.println(iterator.next());
    try {

    赞(0)
    未经允许不得转载:171主机测评 » ArrayList并发问题
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址