范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

11Java线程(下)为什么局部变量是线程安全的?

  当多个线程访问共享变量时,导致并发问题,Java里面是不是所有的变量都是共享变量呢?不少同学给所有的局部变量设置同步,显然没有把共享变量说清楚,那么Java局部变量是否存在并发问题呢?
  很多人知道,局部变量是不存在竞争的,至于原因吗?说不清楚。
  你需要稍微知道点编译原理的东西,CPU层面是没有方法的概念的,只有一条条的指令,编译程序就是把高级语言里的方法转换成一条条的指令,你可以站在编译器实现的角度,思考怎么完成方法到指令的转换呢?  方法是如何被执行的
  高级语言的普通语句里,翻译成 CPU 的指令相对简单,可方法的调用就比较复杂了。例如下面这三行代码:第 1 行,声明一个 int 变量 a;第 2 行,调用方法 fibonacci(a);第 3 行,将 b 赋值给 c。  int a = 7; int[] b = fibonacci(a); int[] c = b;
  当你调用 fibonacci(a) 的时候,CPU 要先找到方法 fibonacci() 的地址, 然后跳转到这个地址去执行代码,最后 CPU 执行完方法 fibonacci() 之后,要能够返回。 首先找到调用方法的下一条语句地址,:也就是int[] c=b;的地址,再跳转到这个地址去执行。 你可以参考下面这个图再加深一下理解。
  到这里,方法调用的过程你就清楚了,但还有一个问题,CPU去哪里找到方法调用的参数和返回地址呢?如果你熟悉,就会立刻想到,CPU的堆栈寄存器。CPU支持一种栈结构,先入后出。因为 这个是跟方法调用相关的,所以叫做调用栈。
  例如,有三个方法 A、B、C,他们的调用关系是 A->B->C(A 调用 B,B 调用 C),在运行时,会构建出下面这样的调用栈。每个方法在调用栈里都有自己的独立空间,称为栈帧,每个栈帧里都有对应方法需要的参数和返回地址。当调用方法时,会创建新的栈帧,并压入调用栈;当方法返回时,对应的栈帧就会被自动弹出。也就是说,栈帧和方法是同生共死的。
  利用栈结构来支持方法调用这个方案非常普遍,以至于 CPU 里内置了栈寄存器。虽然各家编程语言定义的方法千奇百怪,但是方法的内部执行原理却是出奇的一致:都是靠栈结构解决的。Java 语言虽然是靠虚拟机解释执行的,但是方法的调用也是利用栈结构解决的。  局部变量存哪里?
  我们已经知道方法的调用在CPU眼里怎么执行的,但还有一个关键问题,方法内的局部变量存在哪里?
  局部变量的作用域是方法内部,也就是说当方法执行完,局部变量就没用了,局部变量应该跟方法共生死,所以局部变量放到调用栈那边是相当合理,事实上,的确这样,局部变量就是放到了调用栈里,于是调用栈结构就变成了如下:
  基本都会知道,所有的教材都会告诉你,new出来的对象存在堆里,只不过很多人不清楚 堆跟栈的区别,以及为什么要区分 堆跟栈,现在清楚了局部变量是跟方法同生死的,一个变量想跨越方法的边界,就必须在堆里。  调用栈与线程
  两个线程可以同时用不同的参数调用相同的方法。那调用栈跟线程是一种什么关系呢?答案:  每个线程都有自己独立的调用栈  。如果不是这样,那么线程就相互干扰了,如下图所示:
  现在再来 让我们看下开头的问题,Java方法里面的局部变量是否存在并发的问题呢?现在你应该很清楚了,一点问题也没有,因为每个线程都有自己的独立调用栈,局部变量存在各自调用的线程栈中,不会共享,自然不会有共享问题,再次重申一遍:没有共享 就么伤害!!  线程封闭
  方法里的局部变量,因为不会和其他线程共享,所以没有并发问题,这个思路很好,已经成为解决问题的一种思路方法,这里有个响亮的名字叫做:线程封闭。
  即 仅在单线程内访问数据。由于不存在共享,所以即便不同步也不会出现并发问题。
  采用线程封闭的案例很多,数据库连接池获取的 connection,jdbc规范并没有要求这个connection必须是线程安全的。数据库连接池通过线程封闭技术,获取到的connection在释放之前不会再分配给其他请求。从而保证不会有并发问题。

国产智能手机销量,荣耀将赶超苹果3月29日的消息,第三方的市调机构CINNOResearch,公布了今年2月国产智能手机市场月度销量及销量Top5品牌。销量数据显示,2月国产智能手机销量约2348万部,同比下滑了微软Edge超越苹果成为全球第二大桌面浏览器,第一还是谷歌Tech星球4月2日消息,据Neowin报道,近日,Statcounter发布的2022年3月报告显示,微软Edge浏览器份额正在稳步攀升,成功超越苹果Safari,以9。65的市从落后到世界领先,中国是如何逆袭的?这3项硬核黑科技不得不提图为天鲸号从全球落后到世界领先,中国到底是如何逆袭的?基因测序大型挖泥船的研发和太阳能发电技术的推广这三个硬核黑科技不得不提,因为这3个技术,个个令老外们羡慕不已,那么,中国是怎么叮当健康冲刺IPO,多方位助力中国互联网医疗快速发展随着国内老龄化进程加剧与现阶段的客观环境促进居民健康意识增强,医疗大健康行业的长坡厚雪属性已为不少投资者知晓。基于互联网数字化发展,互联网医疗强势崛起,成为市场前景度较高的一条细分与美股关联度达0。9,收益率排名前五,比特币价格能到480万美元?今年以来,加密货币出现不小的下跌行情,最低跌至32928美元,距离最高点69040美元已经跌掉一半以上,尽管目前市场有所回暖,价格达到48184美元,但市场整体表现仍然处于下跌的影鼓励制造业技术创新!福建计划遴选50个项目,最高奖励300万元2日,我省相关部门印发关于组织申报2022年技术创新重点攻关及产业化项目的通知,计划遴选一批技术先进产业化前景好,能提升实体经济竞争力和创新力的制造业技术创新重点项目。据了解,此次华为技术专家教你重构代码将值对象改为引用对象动机一个数据结构中可能包含多个记录,而这些记录都关联到同一个逻辑数据结构。例如,我可能会读取一系列订单数据,其中有多条订单属于同一个顾客。遇到这样的共享关系,既能将顾客信息作为值对货运司机的泪水,挽救不了今后的命运货车帮!运满满!物流界的狼!滴滴打车一统天下的时候,让国人惊恐!现在,国人应暗自窃喜叫车市场还有其它的模式存在,滴滴它垄断不了!平台从业者消费者还可以和谐相处。物流界的货车帮运满满开夜车超4年网约车女司机马红梅累计完成超万订单,没有一个乘客的差评有数据显示,在男性占多数的网约车司机行业中,女性力量正在逐渐崛起,女司机们凭借自己的实力一改大众的传统印象。广州女司机马红梅已经在滴滴平台跑夜班网约车超过4年,为了做好这份工作,她订单少了三成,收入勉强度日,网约车司机能逃离双低困局吗?记不清是从什么时候开始,网约车司机不再为平台说好话,甚至因为高抽成无奈罢工。平台失去资本支持后,在不少方面多了一些限制,尤其是补贴和奖励,包括曹操出行一喂顺风车等平台在下半场的竞逐盲目扩张的悲哀狂奔的T3出行,千百万司机给踩下刹车T3出行的退车潮,闹得沸沸扬扬,业内不少人士对此事件已经见怪不怪,虽然仅仅只有3年的历史,但是T3的退车黑历史,早已经不是一次两次了。面对这么丢脸的事情,T3的高管也是置若罔闻,白
快运疯狂敛财,资本理性断供无论是今年的河南洪水还是突如其来的零星疫情,每次灾难面前都很难见到平日里一直都热爱品牌宣传的诸多快运品牌,反而更多的是平日里备受欺压加盟商网点更有爱心,承担起社会责任。更有甚者,反十月份即将发布的手机有没有你期待的?第一部黑鲨4sPro游戏手机搭载骁龙888plus处理器同时配备台式机的SSD磁盘阵列安卓性能巅峰144hz高刷的三星屏120W快充4500毫安的电池充满电用时不到小米真的消灭了山寨机吗?山寨机的泛滥是从2G时代开始发展的因为联发科提供了一站式的解决方案芯片和系统打包销售你想制作手机只需要把屏幕和按键等部件做出来就可以了制作手机的门槛几乎为零山寨机时代的没落除了小米高刷究竟有多费电?你的手机是120hz刷新的屏幕吗?是的扣1不是的扣2你们知道120hz的屏幕究竟有多费电吗?看到结尾有惊喜用两台三星s20ultra其他设置都完全相同左边那个是60hz右边那个是1红米Note11Pro也配叫旗舰机?红米Note11Pro叫体验小旗舰为了天玑920能得到大家的理解一般大家都认为只有各厂配置最好的手机才能称之为旗舰但是旗舰这个词最近被玩坏了Civi叫颜值手感旗舰11ultra叫拍10月下旬将发布的两款手机,有没有你喜欢的?第一款ramlmeq3s搭载骁龙778G处理器6。59英寸LCD屏支持120hz高刷后置三摄采用圆形相机模组5000毫安的大电池30W快充预计价格会在1200到1300之间顶替目前大地震SupernovaLuminous超低音上市开箱美国超低音的标志,大地震品牌隆重发布全新超低音SupernovaLuminous系列!目前有双15寸及双12寸两个版本。视频加载中大地震旗舰系列超低音Supernova超级强悍的效不计成本的杰作Cambridge剑桥EdgeNQEdge系列是CambridgeAudio成立50周年所推出的纪念产品,由于是周年纪念产品,所以CambridgeAudio是以最高规格来设计制作。EdgeNQ是这个系列的数字串流音乐之都,音乐之魂Vienna维也纳之声古典贝多芬维也纳是独特的城市,作为神圣罗马帝国与奥兄弟国首都,哈布斯堡家族经营下的美丽城市,总是有一种强烈的高贵与华丽。各种因缘之下,维也纳没有受到太多战火摧残,故此市容不但典雅,亦非常美丽音为有万家HiFi响见圣诞圣诞节就要到了乏味许久的街又穿上久违的圣诞装Jinglebells的旋律在耳边跳起了舞仿佛繁复忙碌的日子伴随梦幻般的铃铛声消散不见那些解不开的烦恼结都变成了快乐的圣诞结圣诞节快乐每超乎想象的精彩FocalChora816落地喇叭当伦敦交响乐团在普列文指挥下发出强悍又急促的齐奏,钢琴家鲁普富有节奏地弹出下行音型,双簧管悠扬地吹出第一主题,同时可听见其他木管的对位,钢琴继之以复述,然后导出乐团的合奏,第二主题