随笔 - 172  文章 - 0  评论 - 0  阅读 - 11939

Java 多线程(六)线程同步

并发

  同一个对象被多个线程同时操作

 

线程同步

 现实生活中,我们会遇到同一个资源,多个人都想使用的问题。比如,食堂排队打饭,每个人都想吃饭

最天然的解决办法就是排队,一个个来。

 处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象。这个时候我们就需要

线程同步,线程同步其实就是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成

队列,等待前面线程使用完毕,下一个线程再使用。

 

队列和锁

 由于同一进程的多个线程共享一块存储空间,在带来方便的同时,也带来了冲突问题,为了保证数据在

方法中被访问时的正确性,在访问时加入锁机制synchronized,当一个线程获得对象的排他锁,独占资源,

其他线程必须等待,使用后释放锁即可,存在以下问题:

  1.一个线程持有锁会导致其他所有需要此锁的线程挂起

  2.在多线程竞争下,加锁,释放锁会导致比较多的上下文切换和调度延时引起性能问题

  3.如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能问题

posted on   键盘敲烂的朱  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示