并发编程实战
长弓Smile
这个作者很懒,什么都没留下…
展开
-
线程安全性
定义: 当多个线程访问某个类时,这个类始终能表现出正确的行为,那么就称这个类是线程安全的。(所谓正确,指的是we know it when we see it(所见即所知))无状态对象一定是线程安全的。竞态条件:在并发编程中,由于不恰当的执行时序而出现不正确的结果是一种非常重要的情况,即竞态条件。 最常见的竞态条件类型: “先检查后分析Check-Then-Act”,本质为基于一种可...原创 2018-04-23 21:42:44 · 119 阅读 · 0 评论 -
volatile关键字
1.Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量时共享的,因此,不会把该变量上的操作与其他内存操作一起重排序。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile变量时总是返回最新写入的值。 volatile本质是在告诉jvm当前...原创 2018-04-25 19:47:20 · 95 阅读 · 0 评论 -
关于对象锁和类锁
相关说明:类锁控制类的所有实例的访问对象锁锁住的是当前实例,对同一类的不同实例就没有限制实验环节: 对象锁class Object_Lock{ //代码块上 -- 锁住调用该方法的对象 public void funA(){ synchronized (Object_Lock.this){ for(int i = 1 ;i...原创 2018-08-24 15:16:35 · 133 阅读 · 0 评论 -
阻塞队列与生产者-消费者模式
参考书籍:《Java并发编程实战》 Brian Goetz 阻塞队列 阻塞队列提供了可阻塞的put和get方法,以及支持定时的offer和poll方法。如果队列已经满了,则put方法将阻塞直到有空间可用;如果队列为空,则take方法将阻塞直到有元素可用,队列可以是有界的也可以是无界的,无界队列永远不会充满,因此无界队列上的put方法永远不会阻塞。阻塞队列支持生产者消费者模式。有数据生成时,...原创 2018-08-24 15:49:42 · 796 阅读 · 0 评论 -
闭锁
参考书籍:《Java并发编程实战》 闭锁 一种同步工具类,可以延迟线程的进度知道其达到终止状态。 作用:相当于一扇门,在闭锁达到结束状态之前,折扇门一直关闭,并且没有任何线程通过,当达到结束状态时,这扇门才会打开,并允许所有的线程通过。当闭锁达到结束状态后,将不会再改变状态,因此这扇门会永远保持打开状态。使用场景确保某个计算在其需要的所有资源都被初始化之后才能继续执行。确保某个服...原创 2018-08-30 15:15:24 · 744 阅读 · 0 评论 -
Java并发编程中的重要概念1_同步和异步
同步(Synchronous) VS 异步(Asynchronous)1.同步指的是发送一个请求,需要等待返回,然后才能发送下一个请求。2.异步指的是发送一个请求,不需要等待返回,任务完成后会通知,随时可以发送下一个请求。如图所示:...原创 2019-03-28 16:36:27 · 430 阅读 · 0 评论