随笔分类 -  JUC

摘要:全称是AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架 特点: 用state属性来表示资源的状态(分独占模式和共享模式),子类需定义如何维护这个状态,控制如何获取锁和释放锁 getState - 获取state状态 setState - 设置state状态 c 阅读全文
posted @ 2022-03-14 14:18 fjhnb 阅读(70) 评论(0) 推荐(0) 编辑
摘要:Unsafe对象提供了非常底层的,操作内存、线程的方法,Unsafe对象不能直接调用,只能通过反射获得。 public Class UnsafeAccessor{ static Unsafe unsafe; static{ try{ Field theUnsafe = Unsafe.class.ge 阅读全文
posted @ 2022-03-14 11:13 fjhnb 阅读(140) 评论(0) 推荐(0) 编辑
摘要:CAS的底层是lock cmpxchg 指令(X86架构),在单核CPU和多核CPU下都能保证【比较-交换】的原子性。 在多核状态下,某个核执行到带lock的指令时,CPU会让总线锁住,当这个核把此指令执行完毕,再开启总线。这个过程中不会被线程的调度机制所打断,保证了多个线程对内存操作的准确性,是原 阅读全文
posted @ 2022-03-13 15:25 fjhnb 阅读(121) 评论(0) 推荐(0) 编辑
摘要:happens-before 规定了对共享变量的写操作对其他线程的读操作可见,它是可见性和有序性的一套规则总结,抛开以下happens-before 规则,JMM并不能保证一个线程对共享变量的写,对于其他线程对该共享变量的读可见。 线程解锁m之前对变量的写,对于接下来对m加锁的其它线程对该变量的读可 阅读全文
posted @ 2022-03-13 14:19 fjhnb 阅读(43) 评论(0) 推荐(0) 编辑
摘要:原理之wait/notify Owner线程发现条件不满足,调用wait方法,即可进入WaitSet变为Waiting状态 BLOCKED 和 WAITING的线程都处于阻塞状态,不占用CPU时间片 BLOCKED线程会在Owner线程释放锁时唤醒 WAITING线程会在Owner线程调用notif 阅读全文
posted @ 2022-03-07 19:45 fjhnb 阅读(31) 评论(0) 推荐(0) 编辑
摘要:Java 对象头 以32位虚拟机为例 普通对象:Object Header(64bits) ​ Mark Word(32bits) Klass Word(32bits) 数组对象:Object Header(96bits) ​ Mark Word(32bits) Klass Word(32bits) 阅读全文
posted @ 2022-03-07 17:25 fjhnb 阅读(498) 评论(0) 推荐(0) 编辑
摘要:Windows 任务管理器可以查看进程和线程数,也可以用来杀死进程。 tasklist 查看进程 tasklist | findstr java taskkill 杀死进程 Linux ps -fe 查看所有进程 ps -ef |grep java ps -fT -p 查看某个进程(PID)的所有线 阅读全文
posted @ 2022-03-03 13:42 fjhnb 阅读(766) 评论(0) 推荐(0) 编辑
摘要:进程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理IO的。 当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。 进程就可以视为程序的一个实例,大部分 阅读全文
posted @ 2022-03-03 10:56 fjhnb 阅读(98) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示