我们常用的ArrayList,LinkedList都不是线程安全的的List,为什么这么说:

    /*** A counter for changes to the list.*/protected transient int modCount;

这是他们的父类  AbstractList 中的属性,含义就是用来标记当前修改次数,用于在遍历数据时保证数据的一致性;

<span style="white-space:pre">  </span>public E next() {if (expectedModCount == modCount) {try {E result = get(pos + 1);lastPosition = ++pos;return result;} catch (IndexOutOfBoundsException e) {throw new NoSuchElementException();}}throw new ConcurrentModificationException();}

那如何保证List的线程安全呢,调用Collections.synchronizedList(new ArrayList());

    /*** Returns a wrapper on the specified List which synchronizes all access to* the List.** @param list*            the List to wrap in a synchronized list.* @return a synchronized List.*/public static <T> List<T> synchronizedList(List<T> list) {if (list == null) {throw new NullPointerException("list == null");}if (list instanceof RandomAccess) {return new SynchronizedRandomAccessList<T>(list);}return new SynchronizedList<T>(list);}

他的实现原理其实就是添加了 synchronized 同步串以保证线程安全。

        @Override public boolean add(E object) {synchronized (mutex) {return c.add(object);}}

java List 线程安全相关推荐

  1. java 父线程_Java父线程(或是主线程)等待所有子线程退出的实例

    导读热词 实例如下: static void testLock1(){ final AtomicInteger waitCount = new AtomicInteger(30000); final ...

  2. [改善Java代码]线程优先级只使用三个等级

    线程的优先级(priority)决定了线程获得CPU运行的机会,优先级越高获得的运行机会越大,优先级越低获得的机会越小.Java的线程有10个级别(准确的说是11个级别,级别为0的线程是JVM,应用程 ...

  3. Java 自定义线程池

    Java 自定义线程池 https://www.cnblogs.com/yaoxiaowen/p/6576898.html public ThreadPoolExecutor(int corePool ...

  4. Java子线程中的异常处理(通用)

    Java子线程中的异常处理(通用) 参考文章: (1)Java子线程中的异常处理(通用) (2)https://www.cnblogs.com/toplist/p/7594557.html 备忘一下.

  5. java 子线程传参_踩坑之Java执行Linux命令死锁阻塞挂起

    1 问题背景 最近在做一个需求需要调用linux下的某个脚本来对ai的模型进行训练,很简单的需求,我像往常一样写下如下的代码片段: Process process = Runtime.getRunti ...

  6. Java创建线程的方式

    Java中线程的创建有四i种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过实现Runnable接口,实例化Thread类 3.应用程序 ...

  7. Java Daemon线程

    1 所谓守护线程就是运行在程序后台的线程,程序的主线程Main(比方java程序一开始启动时创建的那个线程)不会是守护线程 2.Daemon thread在Java里面的定义是,如果虚拟机中只有Dae ...

  8. 【Android NDK 开发】JNI 线程 ( JNI 线程创建 | 线程执行函数 | 非 JNI 方法获取 JNIEnv 与 Java 对象 | 线程获取 JNIEnv | 全局变量设置 )

    文章目录 I . JNI 线程创建 II . 线程执行函数 III . 线程方法获取 Java 对象 IV . 线程方法获取 JNIEnv V . JNI 线程 完整代码示例 I . JNI 线程创建 ...

  9. Java多线程——线程的优先级和生命周期

    Java多线程--线程的优先级和生命周期 摘要:本文主要介绍了线程的优先级以及线程有哪些生命周期. 部分内容来自以下博客: https://www.cnblogs.com/sunddenly/p/41 ...

  10. Java 守护线程概述

    Java的线程分为两种:User Thread(用户线程).DaemonThread(守护线程). 只要当前JVM实例中尚存任何一个非守护线程没有结束,守护线程就全部工作:只有当最后一个非守护线程结束 ...

最新文章

  1. OSChina 周日乱弹 —— 表白的终极境界!
  2. 4.Java中的关键字和标识符
  3. 测试开发岗面试问题-工具类
  4. 平台系统表怎么修改为普通表
  5. add a legend to a boxplot in MATLAB
  6. 160 - 41 defiler.1.exe
  7. java程序崩溃怎么重启_android 异常崩溃后 重启app(进程守护方式实现)
  8. java中使用lua脚本
  9. 解析xml文件的几种技术
  10. 不同人眼中的“顶级程序员”,这差距也太大了吧!
  11. Java基础语法实例(2)——实习第二天
  12. 三菱je -c中映射表的作用_如何将三菱PLC程序转换成欧姆龙PLC程序?
  13. 运放技术——压摆率和上升时间
  14. Linux基础命令之cd返回上级目录/返回根目录/进目录/返回上一次目录/返回指定目录
  15. python求三重积分_python Scipy积分运算大全(一重、二重及三重积分)
  16. oracle数据库期末复习
  17. error in ./node_modules/swagger-ui-react/swagger-ui.js
  18. 计算机技术服务业成本核算,技术服务成本怎么核算?
  19. 统计学家的矫情和人工智能专家的反驳
  20. php mysql 变量赋值_PHP 变量

热门文章

  1. matlab有限元三角,FEM-MATLAB(75) 有限元编程75个案例,梁、板等结构,三角形,四边形等单元 Algorithm 数学计算 272万源代码下载- www.pudn.com...
  2. NET酒店宾馆客房管理系统源码
  3. 第一篇文章 关于道德经
  4. 【设计模式】抽象工厂模式 Abstract Factory Pattern
  5. 音乐乐队演出票务网站模板
  6. #1.5与其它理论关系
  7. 如何制作完美消音伴奏
  8. Apache Skywalking 视频教程
  9. 即将改变世界的力量:2021年最具影响力的科技预测
  10. 坐标转换软件OpenCoord