集合的同步与非同步

Java的集合中都说ArrayList 非同步、LinkedList 非同步、Vector 同步 、Stack 同步,线程安不安全,那么这里所说的同步,和线程安全是什么呢?

在这里的非同步指的是,当使用线程和web的时候,对于这个集合对象进行操作,那么不同的线程,和不同的web客户端所获取的这个集合对象是不同的.所以是说不同步,且不在同一个线程,多线程的形式,是不安全的.

 

比如说现在 线程A 和 线程B, 要拿到这个集合对象, 现在集合对象有[1,2,3].那么A在集合对象里添加了一下数字[1,2,3,4,5].那么这个时候B线程所取拿这个集合对象的时候,还是[1,2,3]而不是A已经修改好的集合[1,2,3,4,5].所以说这里的集合不同步,线程不安全.

   

什么是线程安全问题?

 

线程安全,其实指的就是内存的安全. 目前主流操作系统都是多任务多线程同时进行的.为了保证安全,每个进程只能访问分配额给自己的内存空间,而不能访问别的进程,这是由操作系统保障的.

在每个进程的内存空间中都会有一块特殊的公共区域,通常称为 堆区(内存).进程内所有的线程都可以访问到该区域,这就是造成线程安全问题的潜在原因.

所以, 线程安全 指的是,在堆区内存的数据由于可以被任何线程访问到,没有限制的情况下存在被意外修改的风险.

原文地址:https://www.cnblogs.com/nineberg/p/12272858.html