当前位置: 首页 > article >正文

什么时候出现线程安全,如何实现线程安全?

1.什么时候出现线程安全

多线程的环境下,多个线程共享某块内存空间,并且这块共享的内存空间涉及到数据的修改

2.如何实现线程安全

(1)多线程并发不安全的原因已经知道,那么针对这种情况,java中有两种解决思路:

  1. 给共享的资源加把锁,保证每个资源变量每时每刻至多被一个线程占用。
  2. 让线程也拥有资源,不用去共享进程中的资源。

(2)基于上面的两种思路,下面便是3种实施方案:

1. 多实例、或者是多副本(ThreadLocal),一个线程一个对象,对象内存不共享,实例变量内存不共享;

2. 使用锁机制 synchronize、lock方式:为资源加锁;

3. 使用 java.util.concurrent 下面的类库:有JDK提供的线程安全的集合类。

(3)尽量使用局部变量代替实例变量

总结:(前提是:多线程并发的环境下,数据有修改操作)

    局部变量不可能存在线程安全问题

    实例变量可能存在线程安全问题

    静态变量一定存在线程安全问题

守护线程:

1.线程分类 用户线程,和守护线程[之前讲的所有进程都是用户线程]

2.什么是守护线程,守护线程的特点?

守护线程又被称后台线程,例如 GC机制(java中的自动垃圾回收机制)

特点: 当所有的用户线程结束之后,守护线程自动结束,另外守护线程通常是一个死循环


http://www.kler.cn/a/382433.html

相关文章:

  • 工作流初始错误 泛微提交流程提示_泛微协同办公平台E-cology8.0版本后台维护手册(11)–系统参数设置
  • leetcode-5-最长回文子串
  • Windows、Linux系统上进行CPU和内存压力测试
  • 如何在一个 Docker 容器中运行多个进程 ?
  • 大客户营销数字销售实战讲师培训讲师唐兴通专家人工智能大模型销售客户开发AI大数据挑战式销售顾问式销售专业销售向高层销售业绩增长创新
  • 前端使用PDF.js把返回的base64或二进制文件流格式,实现pdf文件预览
  • ubuntu交叉编译expat库给arm平台使用
  • 【蓝队技能】【溯源反制】反打红队-蜜罐工具反制
  • MySQL数据库中的视图
  • 多模态模型中的动态分辨率总结
  • 前端使用PDF.js把返回的base64或二进制文件流格式,实现pdf文件预览
  • 移门减震器-止门时的震动保护门体和墙体
  • 详细分析SQL state [99999]; error code [17059]; 无法转换为内部表示 解决方法(实战讲解)
  • 【LeetCode】【算法】322. 零钱兑换
  • sqli-labs(第一关)
  • 5G学习笔记三之物理层、数据链路层、RRC层协议
  • Flinksql 模拟 视图 监听
  • Python(PySimpleGUI 库)
  • gulp入门教程16:gulp插件gulp-uglify
  • 软件测试学习笔记丨Flask操作数据库-一对多
  • 电商行业企业员工培训的在线知识库构建
  • git常用操作指令
  • oasys系统代码审计
  • mmsegmentation训练自己的数据集
  • java语言基本编程原理
  • 5.Java 数组(一维数组、二维数组、数组实例实操)