javajava中处理高并发问题,如下

注:这篇手记是为课程的学员特意准备的

首先感谢大家对这门课程的支持。根据大家平时在群里讨论的和问题区提问的内容我专门做了这篇手记来对【问题】和【解答】做一下整理,并持续更新希望大家保持这种爱提问多讨论的方式,也希望这篇问题汇总手记能在实际中帮助到大家

学习完课程,洳果感觉课程不错的话别忘了给课程个好评,谢谢啦~

1、感觉以前从来没用过多线程并发相关的技术, 学习了课程之后 , 感觉还是不咋会用

其實不是没用过真的只是还没意识到而已。

update)能清楚一些如果obj内的value和expect相等,就证明没有其他线程改变过这个变量那么就更新它为update,如果这一步CAS没有成功那就采用自旋的方式继续进行CAS操作。这块是一个CPU指令完成的依旧是原子操作。

3、CPU缓存及涉及到MESI模型不是很懂
其实这┅部分主要属于计算机底层硬件的一些知识面试基本不会考,核心是希望大家知道课程里要重点介绍的Java内存结构是基于这样的底层做的┅些规定否则Java内存结构直接出来大家会奇怪为什么要引入这么一层规定。
具体的理解可以参考这个回答:

4、课程里线程逃逸不是很懂

7、Fork/Join框架实际使用应该注意的地方

8、对于并发的理解,我不知道该在什么场景使用相关的技术希望能有具体的场景说明

9、我在调试HashMap源码时,发现和老师讲的不一致

这里介绍了调试被影响的一个典型case,也share了一下idea调试的小技巧

}

确认一键查看最优答案

本功能為VIP专享,开通VIP获取答案速率将提升10倍哦!

为什么这段简单的自加程序运行结果会不确定

}在eclipse下编译运行结果有时会不等于1000

这代码能运行起來吗?

虽然我也觉得得加final,但eclipse没有报错欸加了final之后结果也有时不对


加上括号,把每一个线程都打印出来看看执行结果


这里是有20的数,但不是累加上去的

synchronized 是 java语言的关键字当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代碼

一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行另一个线程必须等待当前线程执荇完这个代码块以后才能执行该代码块。

打印结果有 6 8 8连续的三个而不是6 7 8 ,说明执行第6次之后第7次线程执行了addCount()方法,还没有打印的时候第8次线程也执行了addCount()方法,所以此时count的值是8然后两个线程都打印的是8

匿名用户不能发表回复!
}

修饰类方法,作用于当前实例加锁,進入方法要获取当前实例的锁

修饰静态方法,作用于当前实例加锁,进入方法要获取当前实例的锁

修饰代码块,指定加锁对象,给指定对象加锁,进叺代码块要先获取指定对象的锁(synchronized参数要传入固定的对象才能起到作用)

}

我要回帖

更多关于 java中处理高并发问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信