前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java线程与内存模型

Java线程与内存模型

作者头像
cwl_java
发布2019-10-26 20:40:42
3540
发布2019-10-26 20:40:42
举报
文章被收录于专栏:cwl_Javacwl_Java
1.工作流程图
线程操作内存图
线程操作内存图
2.内存之间的交互操作
  • 2.1 Lock (锁定): 把一变量标识为一条线程独占的状态
  • 2.2 unlock (解锁) : 把处于锁定状态的变量释放出来
  • 2.3 read (读取) : 把一个变量从主内存加载到工作内存
  • 2.4 load (载入) : 把工作内存中的变量值复制到变量副本当中
  • 2.5 use (使用) : 将值传递给工作引擎
  • 2.6 assign (赋值) : 把从执行引擎接收到的值传递给工作内存的变量
  • 2.7 store (存储) : 把工作变量当中的值传送到主内存当中,之后可以进行write操作
  • 2.8 write (写入) : 把操作完成之后的值写到主内存的对应变量当中
3.volatile类型变量的特殊规则
  • 3.1 可见性:只要是volatile修饰的变量,那么只有有任一个线程对该变量进行了修改,那么这次的修改对所有线程就是可见的,不会出现脏读或者是幻读的问题
  • 3.2 禁止指令重排序优化,保证代码顺序执行,防止其他线程抢占式串行执行
4.对于long和double类型的特殊规则

Java内存模型当中上述2.1~2.8的所有操作都是要求要具备原子性的,但是对于64位的数据类型long和double来说却是需要分割成来此来进行操作的

5.Java线程调度
  • 协同式调度
    • 优点是线程顺序执行,每个线程执行完成之后通知下一个线程执行,线程的切换时可知的
    • 缺点是一旦有一条线程的代码出现问题,一直不通知下一个线程,那么就可能导致线程的阻塞问题
  • 抢占式调度
    • 优点是线程的切换是随机的,切换速度快,不容易出现线程阻塞问题
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-04-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.工作流程图
  • 2.内存之间的交互操作
  • 3.volatile类型变量的特殊规则
  • 4.对于long和double类型的特殊规则
  • 5.Java线程调度
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档