摘要: 1 无锁 (1) cas (compare and swap) 设置值的时候,会比较当前值和当时拿到的值是否相同,如果相同则设值,不同则拿新值重复过程;注意,在设置值的时候,取值+比较+设值 是一条cpu语句,在这个过程中不会有其他线程干扰,是原子操作。从指令层面保证操作可靠。CAS有3个操作数,内 阅读全文
posted @ 2017-03-27 17:22 练拳码农 阅读(1025) 评论(0) 推荐(0) 编辑
摘要: 1 可以手动实现一个最简单的线程池,不考虑性能和等待机制等。public class Worker extends Thread { private LkThreadPool pool; private Runnable target; private boolean isShutDown=fals 阅读全文
posted @ 2017-03-27 17:21 练拳码农 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 2 同样 如果想要实现能够重入的读写锁,读可重入,写唯一,并且读写互斥,那么需要用两个资源分别给读写的线程竞争, 读的资源可累加,每次线程readlock的时候加一,不设上限;写的线程如上面只可唯一线程获得资源。并且无论读写线程竞争资源之前, 都要检测对方资源是否已经被占用,如果占用也要挂起,这样可 阅读全文
posted @ 2017-03-27 17:20 练拳码农 阅读(1250) 评论(0) 推荐(0) 编辑
摘要: 1锁基础和优化。 (1)对象头mark *对象头的标记,描述对象的hash,锁信息,垃圾回收标记,年龄等。包括指向锁记录的指针,指向monitor的指针,gc标记,偏向锁线程id。这部分数据的长度在32位和64位的虚拟机中分别为32bit和64bit,简称“Mark Word” *对象头信息是与对象 阅读全文
posted @ 2017-03-27 16:02 练拳码农 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 1 基本概念 同步(synchronous)异步(asynchronous) 并发(concurrency)并行(paralleism) 区别:并发是一个cup分时执行不同部分,并行是多个cpu线程同时执行。 临界区 :公共资源(共享数据)。当两个线程竞争同一资源时,如果对资源的访问顺序敏感,就称存 阅读全文
posted @ 2017-03-27 16:00 练拳码农 阅读(216) 评论(0) 推荐(0) 编辑