
多线程
文章平均质量分 70
进击的小飞鱼
任何事情变得简单之前,唯一答案就是努力去做
展开
-
Concurrent中DelayedQueue原理与用法
常常会遇到一些延迟任务(100ms后执行该任务)、周期任务(每10ms执行一次)、超时任务(比如缓存,超时就要移除)等。如果我们要创建一个处理这样任务的调度服务,那么DelayedQueue将是首选!首先,看一下jdk中DlayedQueue的源码:public class DelayQueue extends AbstractQueue implements BlockingQu原创 2013-08-19 11:14:08 · 4592 阅读 · 0 评论 -
java concurrency in practice读书笔记----第三章
可见性多线程环境下为什么会有可见性问题呢?现代CPU一般都使用读写速度很快的高速缓存来作为内存和CPU之间的缓冲, 高速缓存的引入可以有效的解决CPU和内存的速度矛盾, 但是也带来了新的问题: 缓存一致性. 在多CPU的系统中, 每个处理器都有自己的高速缓存, 而高速缓存又共享同一内存, 为了解决缓存一致性问题, 需要各个处理器访问缓存时都遵循一定的协议.另外, 为转载 2013-10-24 21:25:57 · 950 阅读 · 0 评论 -
java concurrency in practice 读书笔记--java内存模型
什么是内存模型?为什么需要它?假设一个线程为变量aVariable赋值:avariable=3;内存模型需要解决这个问题:在什么条件下,读取aVariable的线程将看到这个值为3?这个问题似乎听起来很荒谬,当时在多线程情况下,将会有许多因素使得线程无法立即、甚至永远看到另一个线程的操作结果。例如:在编译器中生成的指令顺序,可以与源代码中的顺序不同----重排序;编译器原创 2013-10-29 19:19:26 · 1478 阅读 · 0 评论 -
Java concurrency in practice 读书笔记---synchronizer同步工具类
在容器类中,阻塞队列是一种独特的类:它们不仅能作为保存对象的容器,还能协调生产者和消费者等线程之间的控制流,因为take和put方法将阻塞,直到队列达到期望的状态(队列既非空,也非满)。同步工具类可以是任何一个对象,只要它根据其自身的状态来协调线程的控制流。阻塞队列可以作为同步工具类,其他类型的同步工具类还包括信号量(Semaphore)、栅栏(Barrier)以及闭锁(Latch)。如果这些转载 2013-11-01 19:47:35 · 902 阅读 · 0 评论 -
java concurrency in practice读书笔记---ThreadLocal原理
ThreadLocal这个类很强大,用处十分广泛,可以解决多线程之间共享变量问题,那么ThreadLocal的原理是什么样呢?源代码最能说明问题!public class ThreadLocal { /** * ThreadLocals rely on per-thread linear-probe hash maps attached * to each thre原创 2013-11-14 16:26:49 · 1655 阅读 · 0 评论