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

线程安全与线程池

概念:多个线程,同时操作同一个共享资源的时候,可能会出现业务安全问题。

出现线程安全问题的条件,原因:1.存在多个线程在同时执行    2.同时访问一个共享资源   3.存在修改该共享资源

线程同步:是线程安全问题的解决方案

线程安全的核心思想

让多个线程先后依次访问共享资源,这样就可以避免出现线程安全问题。

线程同步的常见方案

加锁:每次只允许一个线程加锁,加锁后才能进入访问,访问完毕后自动解锁,然后其他线程才能再加锁进来。

方式一:同步代码块

作用:把访问共享资源的核心代码给上锁,以此保证线程安全。

原理:每次只允许一个线程加锁后进入,执行完毕后自动解锁,其他线程才可以进行执行。

同步锁注意事项

对于当前同时执行的线程来说,同步锁必须是同一把(同一对象),否则会出现bug。

锁对象随便选择一个唯一的对象会影响到其他无关线程的执行

锁对象的使用规范:

建议使用共享资源作为锁对象,对于实例方法建议使用this作为锁对象。

对于静态方法建议使用字节码(类名.class)对象作为锁对象。

同步方法:

同步代码块还是同步方法好?

范围上:同步代码块锁的范围更小,同步方法锁的范围更大

可读性:同步方法更好

lock锁

线程池

线程池就是一个可以复用线程的技术

创建线程池

方法一:ThreadPoolExecutor创建线程池处理Runnable任务

ExecutorService

线程池的注意是是事项

处理Callable任务

ExecutorService的常用方法

方法二:通过Executors创建线程池

 并发/并行

进程

http://www.xdnf.cn/news/10669.html

相关文章:

  • Artificial Analysis2025年Q1人工智能发展六大趋势总结
  • PCIe-Error Detection(一)
  • dify应用探索
  • 全文索引详解及适用场景分析
  • NLP学习路线图(十七):主题模型(LDA)
  • AI Agent企业级生产应用全解析
  • Greyctf 2025 writeup
  • 【JAVA】注解+元注解+自定义注解(万字详解)
  • 【位运算】只出现⼀次的数字 II(medium)
  • 1. 前言与安装pytorch、d2l
  • 【Java学习笔记】异常
  • Chapter 10 Inductive DC–DC Converters
  • MCP (模型上下文协议):AI界的“USB-C”标准,开启大模型应用新纪元
  • C语言基础(10)【二维数组 字符数组 字符串相关操作】
  • 代码随想录算法训练营第十一天 | 150. 逆波兰表达式求值、239. 滑动窗口最大值、347.前 K 个高频元素、栈与队列总结
  • 光伏功率预测 | LSTM多变量单步光伏功率预测(Matlab完整源码和数据)
  • 用“照片放大/缩小”来通俗理解多尺度
  • QT入门学习(二)---继承关系、访问控制和变量定义
  • Dockerfile常用指令介绍
  • 【Redis】Set 集合
  • Python列表、字典、元组、集合
  • 推荐一款使用html开发桌面应用的工具——mixone
  • 39. 组合总和【 力扣(LeetCode) 】
  • 从万物互联到万体智联:论智能体互联网带来的产业革命
  • 可视化大屏如何制作
  • SQL快速入门【转自牛客网】
  • 强人工智能 vs 弱人工智能:本质区别与未来展望
  • CppCon 2014 学习:Defensive Programming Done Right.
  • 嵌入式Linux 期末复习指南(下)
  • Java递归编程中的StackOverflowError问题分析与解决方案