问答详情
源自:5-3 线程安全问题

emmm最后一个例子在说明什么

用一个list转为并发流,又用Collectors转回普通的list,你既没有remove 也没有add 在说明什么问题呢?

提问者:qq_慕丝3367668 2020-04-01 13:38

个回答

  • 送外卖
    2020-04-04 21:29:52

    因为多个线程同时可能都处理了同一条数据,比如线程1和线程2,cpu先分配线程1处理数据,线程1处理到第20个数据时,还未处理完,cpu分配时间到了,然后cpu分配任务给线程2,因为没有同步锁,线程2又把第20条数据add进去了,接着线程2时间到了,轮到线程1,他会接着走他的没走完的那条数据,又会把20add进去,大概就是这个意思,这就是线程不安全和安全的问题,老师说了可以使用同步锁代码块来解决,或者从数据源开始就使用线程暗转的集合

  • qq_慕丝3367668
    2020-04-01 13:40:22

    http://img2.mukewang.com/5e84291d0001bcab09770658.jpg

    补充一下,这里不太明白为啥数组越界了