- 博客(5)
- 收藏
- 关注
原创 Nodulus玩法介绍
1.游戏目标 从起始亮起的结点处移动木棍到达绿色结点 2.操作 点住亮起的结点可向相邻结点方向滑动 示例: 点住结点向右滑动,连接结点的木棍处于可选往左或右移动的状态,此时再点住结点朝可选择方向移动。 3.规则 木棍长度是固定的,移动时只能移动到相同长度的空位。并且可以隔着其他木棍移动 ...
2022-04-08 20:41:58
3384
原创 java并发编程——volatile、锁和final的内存语义
本文是阅读《Java并发编程的艺术》后将自己记忆的理论知识和理解复写出来的产物,若有不足,欢迎指正! 一、volatile及其内存语义 之前的学习了解过volatile,知道它可以修饰共享变量,保证对变量的操作具有顺序性和可见性,并且与synchronized进行了对比。 volatile的写与锁的释放有相同的内存语义,读与锁的获取有相同的内存语义。 1.读的内存语义 当读一个volatile变量时,JMM会把该线程对应的本地内存置为无效,线程将从主存中读取共享变量。 2.写的内存语义 JMM
2022-03-09 21:39:03
320
原创 java并发编程——java内存模型基础、重排序、顺序一致性
本文是阅读《Java并发编程的艺术》后将自己记忆的理论知识和理解复写出来的产物,若有不足,欢迎指正! 在java中,线程之间是靠共享内存来通信的,是隐式进行的,但对于线程运行顺序的控制(同步),是显示进行的。所以java并发编程和java内存模型有关,java的线程同步需要学习重排序、顺序一致性的知识。 一、java内存模型(JMM)基础 JMM控制了线程和主内存之间的抽象关系,决定一个线程的写入何时对其他线程可见。 1.结构 2.happens-before happens-before是
2022-03-08 20:51:54
198
原创 java并发编程——volatile、synchronized和原子操作及其底层原理
本文是阅读《Java并发编程的艺术》后将自己记忆的理论知识和理解复写出来的产物,若有不足,欢迎指正! java并发编程中锁的存在是来保护多线程中共享资源的安全使用。 一、volatile volatile的意思是:不稳定的; 易变的等等,可以看出它修饰的是变量,目的是保护共享变量能够准确和一致地更新,是一种排他锁。 1.底层原理 汇编代码会多出一行Lock前缀的指令,这个操作将当前处理器缓存行的数据写回系统内存,并让其他CPU里缓存该内存地址的数据无效。 2.优化 在许多处理器中,缓存行是64
2022-03-03 23:44:53
425
原创 java并发编程——并发编程的挑战
本文是阅读《Java并发编程的艺术》后将自己记忆的理论知识和理解复写出来的产物,若有不足,欢迎指正! java并发编程是什么?让多个线程同时处理一个任务,从而达到快速的效果。但不是所有场景都适合并发编程。并发编程的挑战有哪些呢?①并发需要对线程的调度,自然需要切换线程,这就带来了上下文切换的挑战,这里关系到中断。如何保存被中断的线程的上下文,如何选择下一个线程,如何在被中断的线程再次运行时恢复现场?如何减少上下文切换的开销?②在线程竞争资源时有何挑战?死锁③并发编程的运行速度是有上限的,受限于硬件资源和软
2022-03-01 17:30:42
460
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人