
Java并发
will555_
这个作者很懒,什么都没留下…
展开
-
synchronized应用及原理
解决的问题:多线程并发问题;保证了原子性、可见性、有序性 其他方案及比较:lock,区别如下: Lock比较灵活,但需手动释放和开启 Lock不是Java语言内置的,是一个类 并发量较小情况下,synchronized有优势,高并发情况下,性能下降严重,此时适合用Lock Lock的粒度更细 实现原理:JVM基于进入和退出Monitor对象来实现方法同步和代码块同步。 同步代码块:使用monitorenter和monitorexit指令实现,每个对象都有一个monitor与之关联(LockWo.原创 2021-08-14 14:08:48 · 101 阅读 · 0 评论 -
Volatile应用及原理
解决的问题:为了提高处理速度,处理器不直接和内存进行通信,而是将系统内存的数据复制到内部缓存后在操作,但操作完不知何时会写会主内存。会导致出现一个线程修改了变量值还未同步到主内存中,另一个线程继续用缓存数据进行操作,出现了共享变量的不一致。 Volatile变量的的每次读取都从共享内存中读取最新值,而且写入会马上刷新到主内存,保证了多处理器开发中共享变量的“可见性”(不保证原子性)。就是一个线程里修改一个共享变量时,另一个线程能马上读到这个修改的值。 其他方案及比较:synchronized和Lock。原创 2021-08-14 11:55:56 · 121 阅读 · 0 评论