多线程设计
Norton-JAVA工程师
android+java后端架构
展开
-
【CountDownLatch实例】主线程等待其它线程执行完毕
本文章主要体现2点:1 主线程等待子线程执行完毕。通过CountDownLatch实现2 演示共享的HashMap的put操作在多个线程中,如何同步。 这里主要是对比了synchronized块和Collections类的装饰功能。======================================如下面代码,主线程main,等待现场Thread1和2执行原创 2017-05-23 23:16:27 · 687 阅读 · 0 评论 -
【CountDownLatch】死循环检测模板/多线程重复测试模板
意义:CountDownLatch的一个作用是检测死循环,因为死循环不容易复现,需要把一个程序执行多次。有的同学会用脚本循环执行,如果没有linux环境,还得装环境,有点麻烦。所以想到直接用Java实现重复执行一段代码的功能。CountDownLatch在本例子的作用是,每次Loop都等线程执行完了,再执行下一次loop,如果某一次出现死循环,则countDown()不会被原创 2017-05-23 23:36:00 · 1412 阅读 · 0 评论 -
【AQS框架扩展】Oracle官方教程之Fork/Join
Oracle官方教程之Fork/Join原文链接,译文链接,译者:Zach,校对:郑旭东fork/join框架是ExecutorService接口的一种具体实现,目的是为了帮助你更好地利用多处理器带来的好处。它是为那些能够被递归地拆解成子任务的工作类型量身设计的。其目的在于能够使用所有可用的运算能力来提升你的应用的性能。类似于ExecutorService接口的其他实现转载 2017-05-14 19:43:07 · 378 阅读 · 1 评论 -
【多线程研究专题二】【Condtion使用实例】ArrayBlockingQueue解析
在研究Condition时,发现它的API提供了BoudedBuffer实现,并指出ArrayBlockingQueue就是一个BoudedBuffer的高阶实现。因此深入研究了下BoudedBuffer,其核心思想是:1. 使用一个循环数组2. 定义一个Count,作为put和take的次数差值约束,并使得put次数-take次数的差值为 0 - Capacity。达到边界的原创 2017-05-07 21:48:23 · 423 阅读 · 0 评论 -
【多线程研究专题一】【Condition使用实例】Conditon与Lock的关系
摘要:Condition和Lock是一对组合,相当于Synchronize和Object.wait()/Object.notify()的关系。Lock的方法是帮助线程获取锁,Condition的方法是帮助线程释放锁。参考API Doc:http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/Conditio原创 2017-05-07 17:57:18 · 694 阅读 · 0 评论 -
【多线程研究专题三】【FutureTask与Callable的本质】
吐槽:以前看了好多文章和书籍讲FutureTask,讲的很细,但不得要领,还是会忘。绝知此事要躬行,还是得自己亲自分析下源码。1、FutureTask本质上是Runnable和Callable的实现类,就是一个任务类,主函数也是run()。2、FutureTask实现了异步任务,怎么实现的?是因为Callable? 不是。Callable.call()与Runnabl原创 2017-05-07 23:39:54 · 627 阅读 · 1 评论 -
HashMap的尾部遍历问题--Tail Traversing
参考:http://stackoverflow.com/questions/22890967/java-hashmap-tail-traversing在看网上HashMap的resize()设计时,提到尾部遍历。JDK1.7的HashMap在实现resize()时,新table[]的列表采用LIFO方式,即队头插入。这样做的目的是:避免尾部遍历。参考stackoverf原创 2017-05-21 22:59:03 · 4902 阅读 · 1 评论