小标
2018-11-26
来源 :
阅读 1274
评论 0
摘要:本文主要向大家介绍了Java语言并发编程:多线程编程的特点,如何实现互斥?通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
本文主要向大家介绍了Java语言并发编程:多线程编程的特点,如何实现互斥?通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
多线程编程的特点
同一份代码,可以有多个线程执行
——即可以在一个CPU核上面并发执行
——也可以在多个CPU核上并行执行 线程的执行默认是乱序的
——程序员不能假定执行次序 线程会共享数据(对象的变量)
——需要互斥 线程之间也需要合作(同步)
如何实现互斥?
锁
只有获得了锁的线程,才能对共享资源做操作,换句话说:进入临界区
对共享资源做完操作(即使发生异常),一定要释放锁!
锁是什么东西?
“锁”本身如果是软件,也没法保证原子性!
——多个CPU对“锁”操作的时候也会出错 最底层需要硬件指令的支持
——TestAndSet
——Swap
设计“锁”需要考虑的问题
线程申请锁的时候,发现已经被别的线程持有,线程该怎么办? 1、继续尝试,无线循环
——时间片用完了,变成就绪状态,等待下次调度
——自旋锁 2、把线程放到阻塞队列中
可重入性
自旋锁无法重入
解决办法
——记录这个锁被谁持有
——记录重入的次数*
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号