多线程
可乐不加冰&
这个作者很懒,什么都没留下…
展开
-
关于java多线程浅析七:CountDownLatch的原理分析和使用
什么是CountDownLatchCountDownLatch与CyclicBarrier一样,也是一个用与同步的辅助类,它的使用场景是:在一个或者一组其他线程没有执行完毕之前,使当前线程进行等待,只有其他的线程全部完成执行完毕后,当前线程才能继续进行。前一篇我们介绍了CyclicBarrier,在这里说一下CountDownLatch与CyclicBarrier的区别。CyclicBarrier原创 2017-06-19 19:05:37 · 412 阅读 · 0 评论 -
关于java多线程浅析四:ThreadLocal
什么是ThreadLocal ?乍一看,ThreadLocal这个单词还以为根据直译是”本地线程”,是一个线程?其实不然,其实ThreadLocal可以理解成一个工具,一个操作每个线程中都独有的map的入口。与同步机制不同,ThreadLocal提供了另一种针对多线程访问变量冲突问题的解决思路。同步机制采用了“以时间换空间”的方式,而ThreadLocal采用了“以空间换时间”的方式。前者仅提供一份原创 2017-05-23 15:15:09 · 480 阅读 · 0 评论 -
关于java多线程浅析三:每个对象都有的方法
先明确一下一些基本的概念。 1 串行、并行与并发的区别: 不搞那些晦涩的定义,讲一个简单的例子,可能不恰当,但基本上是这个意思。 就拿一个很简单的例子来说吧,下班回家后,你想做饭,但你又想打晋级赛,你想了想,算了,还是打完了晋级赛再做饭吧,好吧,这就是串行,做完一件事再做另外一件事;还有一种方法是,你选择玩亚索发大招的瞬间抽个空去厨房把菜洗了,当然你会死的很惨,这样打一会LOL再洗个菜,然后原创 2017-05-11 23:44:24 · 537 阅读 · 0 评论 -
关于java多线程浅析二:线程的状态
了解线程的状态,是学习多线程的基石。前文说过,线程的存在,就是希望程序能够更有效的利用CPU的资源,但我们都知道,CPU的资源只有一份,调度好线程对资源的合理利用和占用是很困难的。使用线程的时候,我们应该确保线程之间的耦合,确保一个线程不应该干扰另一个线程的执行,确保同步锁的获得与释放都是井然有序的。比如一个线程获取了一个同步锁而正在运行时,那么另外想要获取该同步锁的线程就要进行阻塞等待。这里就涉及原创 2017-05-11 16:27:40 · 671 阅读 · 0 评论 -
关于java多线程浅析一:简单实现生产消费模式
关于什么是线程,这里就不过多介绍了。但为什么要用多线程呢?原因无他,就是希望更好的利用CPU资源。当然,多线程在模拟很多实际场景下,也是一把利器,就比如生产-消费模式,使用不同的线程来充当生产者和消费者,就很容易实现一个简单的生产-消费模型。说到此,那我们就先利用线程中的wait()和notifyAll()方法来实现一个简单的生产-消费模式,之后再从最基本的线程的基本状态讲起。多线程简单实现生产-消原创 2017-05-11 15:01:05 · 2960 阅读 · 0 评论 -
关于java多线程浅析五: Condition条件
java.util.concurrent 包在java语言中可以说是比较难啃的一块,但理解好这个包下的知识,对学习java来说,不可谓是一种大的提升,我也尝试着用自己不聪明的脑袋努力的慢慢啃下点东西来。其实 java.util.concurrent 包中,最核心的就是AQS( AbstractQueuedSynchronizer) 这个抽象类,可以说是整个JUC包的基石,但今天先不说AQS,我先从比原创 2017-06-06 15:27:50 · 2033 阅读 · 2 评论 -
关于java多线程浅析六: CyclicBarrier的原理分析和使用
什么是CyclicBarrier上一篇文章中介绍完了Condition条件,这篇文章就介绍一下使用到了Condition了的CyclicBarrier同步辅助类。CyclicBarrier翻译过来可以理解成“关卡”、“屏障”。想象这样一个场景:100米赛跑比赛上,有4名运动员参见比赛,比较公平的赛法是——等待大家都做好起跑动作,准备好时,裁判员再发信号枪,然后大家一起跑。而在多线程的场景下,每一个运原创 2017-06-09 14:37:38 · 906 阅读 · 0 评论