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

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

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.mrgr.cn/news/66419.html

相关文章:

  • Python 的 Pygame 库来开发一个游戏
  • 物理验证Calibre LVS Debug案例之通过deleteEmptyModule解决LVS问题
  • 开源竞争-数据驱动成长-11/05-大专生的思考
  • 编写第一个 Appium 测试脚本:从安装到运行!
  • 针对解决前后端BUG的个人笔记
  • 信息安全工程师(74)网络安全风险评估技术方法与工具
  • 如何显示弹出式窗口
  • Spark的容错机制
  • WCY的比赛题解
  • java学习3---面向对象
  • 19. 架构重要需求
  • 1105--面试代码题
  • HttpClientUtils
  • 了解数据库并发产生的问题
  • 大数据新视界 -- 大数据大厂之 Impala 与内存管理:如何避免资源瓶颈(上)(5/30)
  • Java开发中的分布式锁使用教程
  • 安装nodemon报错
  • 三维测量与建模笔记 - 3.1 相机标定基本概念
  • 什么是Scaling Law,谈谈你对它的理解
  • PyTorch 2.0: 开启深度学习框架新纪元
  • DI 依赖注入
  • 动态规划之二维背包及杂项
  • 『Anaconda』一文汇总最最最常用的conda指令,强烈建议收藏!!!
  • 【AI落地应用实战】HivisionIDPhotos AI证件照制作实践指南
  • VSCode 上那些值得推荐的 CSS 插件
  • 嵌入式开发之线程互斥