Java 多线程(六)线程同步
并发
同一个对象被多个线程同时操作
线程同步
现实生活中,我们会遇到同一个资源,多个人都想使用的问题。比如,食堂排队打饭,每个人都想吃饭
最天然的解决办法就是排队,一个个来。
处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象。这个时候我们就需要
线程同步,线程同步其实就是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成
队列,等待前面线程使用完毕,下一个线程再使用。
队列和锁
由于同一进程的多个线程共享一块存储空间,在带来方便的同时,也带来了冲突问题,为了保证数据在
方法中被访问时的正确性,在访问时加入锁机制synchronized,当一个线程获得对象的排他锁,独占资源,
其他线程必须等待,使用后释放锁即可,存在以下问题:
1.一个线程持有锁会导致其他所有需要此锁的线程挂起
2.在多线程竞争下,加锁,释放锁会导致比较多的上下文切换和调度延时引起性能问题
3.如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能问题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧