上一页 1 ··· 3 4 5 6 7 8 9 下一页

缓存一致性协议MESI protocol

摘要: https://en.wikipedia.org/wiki/MESI_protocol https://en.wikipedia.org/wiki/Write back_cache https://blog.csdn.net/realxie/article/details/7317630 缓存回写: 阅读全文
posted @ 2018-04-21 14:00 coderDu 阅读(756) 评论(0) 推荐(1)

Lock对象(一):基本介绍

摘要: 1.前言 显式的使用Lock实现类对象加锁是解决共享资源竞争的一个方法,synchronized也可以解决共享资源竞争的问题。原子类AtomicXXX和volatile某些情况也可以解决问题。 synchronized是最常用,如果共享资源被多个任务操作且肯能被某个任务修改,则此资源应为volati 阅读全文
posted @ 2018-04-21 14:00 coderDu 阅读(301) 评论(0) 推荐(0)

仿写LinkedBolckingQueue

摘要: 1.引言 LinkedBolckingQueue以链表的方式实现了一个线程安全的队列。主要使用的技术如下: 1. (重入锁)和 ; 2. 原子数据类型 ; 3. 函数接口 ; 实现此简单的队列后,通过 依次去掉某个技术模块,我们看看多个线程同时存取队列时的效果。 2.简单实现 2.1数据结构 首先是 阅读全文
posted @ 2018-04-21 13:59 coderDu 阅读(141) 评论(0) 推荐(0)

自旋锁一

摘要: 1.概念 对于普通锁:如果线程b去获得线程a已经持有的锁失败时,线程b会挂起(阻塞)。但是==挂起线程和恢复线程操作都需要转入内核状态完成==,如果线程a持有锁的时间特别短,那么 ==线程b不应该放弃CPU时间片,而应该在原地“自旋”等待== 。自旋锁是一种非阻塞锁。 锁的本质就是等待,等待有两种方 阅读全文
posted @ 2018-04-21 13:58 coderDu 阅读(212) 评论(0) 推荐(0)

LinkedBlockingQueue阻塞队列

摘要: "博文.基本介绍" 基本介绍 阻塞队列即支持阻塞插入和阻塞出队的队列——一直等到队列有空位或者有元素。 阻塞队列每种方法提供了四种操作; 1.BlocingQueue基本方法和重点关注 都会想队列中添加元素,不同的是当队列满了以后, 会发生阻塞等待一段时间,以加入元素, 会直接返回==FALSE== 阅读全文
posted @ 2018-04-21 13:58 coderDu 阅读(304) 评论(0) 推荐(0)

synchronized关键字和代码块

摘要: 待更:以下博文缩写均为某一时期所理解,会不断更新。措辞理解多有错误,想要进一步学习请移步其他书籍资料。 一.前言:关于同步 同步执行并非“并行”执行,可以理解为“串行”执行,异步执行可理解为“并行”执行。 所谓的“多线程”可以理解为多个工作者,cpu驱动他们去执行各自的工作。因为这些工作者时常会对某 阅读全文
posted @ 2018-04-21 13:57 coderDu 阅读(232) 评论(0) 推荐(0)

锁优化:逃逸分析、自旋锁、锁消除、锁粗化、轻量级锁和偏向锁

摘要: 1. 逃逸分析 Escape Analysis 1.1 逃逸分为两种: 1. 方法逃逸:当一个对象在 方法 中被定义后,可能作为调用参数被外部方法说引用。 2. 线程逃逸:通过复制给类变量或者作为实例变量在其他线程中可以被访问到。 1.2 逃逸分析相关优化 如果证明一个对象不会逃逸方法外或者线程外, 阅读全文
posted @ 2018-04-21 13:56 coderDu 阅读(2803) 评论(0) 推荐(0)

java内存模型相关:JMM、volatile、并发处理相关的三个特性和happen-before原则

摘要: 需要查看编译后的汇编代码确定volatile禁止重排的效果; 1.引言 JAVA内存模型JMM java memory model可以理解为特定操作协议下,对内存或者告诉缓存进行读写访问的过程抽象。协议指缓存一致性协议cache coherence protocol,比如MESI modify ex 阅读全文
posted @ 2018-04-21 13:55 coderDu 阅读(445) 评论(0) 推荐(0)

Thread基本方法介绍

摘要: 待更新 1. java.lang.SecurityManager; Thread中基本方法 1.void suspend()方法 这是一个过时的方法,与void resume()搭配使用来暂停和唤醒一个线程。这两个方法有可能造成独占和不同步的问题—详见《java多线程编程核心技术》。方法源码如下: 阅读全文
posted @ 2018-04-21 13:55 coderDu 阅读(348) 评论(0) 推荐(0)

线程池(一):基本

摘要: [ ] ThreadPoolExecutor、LinkedBlockingQueue中的代码已经更新了很多,源码分析一节很不全,需要更新; [ ] 什么情况下应该创建多少线程的问题也应该是其中一小节; 比较好的博文链接 http://www.infoq.com/cn/articles/java th 阅读全文
posted @ 2018-04-21 13:54 coderDu 阅读(152) 评论(0) 推荐(0)
上一页 1 ··· 3 4 5 6 7 8 9 下一页