源码
文章平均质量分 56
Do_It_Today
Do_It_Today
展开
-
谈谈线程池的使用
前言首先,肯定要先说说,为什么要用那个线程池?其实无论在计算机领域里面还是在人类社会里面,为了达到某个操作,创建另一资源以及销毁是消耗很大的。我好像又不说人话了……文字概念解释总是比较难懂的……故事看懂了吧?本灵魂画师说的就是这个故事,没有公司会这么做,因为一个员工是一个很重要的资源,不好招的。就像一个线程不好创建的,所以最好是平时搞个池子(公司/线程池)把它们装起来,要用的时候随时能用。这就是线程原创 2017-09-21 23:36:50 · 359 阅读 · 0 评论 -
ReentrenLock的用法
前言这篇文章,主要是说用法,其实这个使用还是很多的,根据一段生产消费者程序,来说一说。一个栗子package com.pochi.juc;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;public class ReentrenLockProblem {原创 2017-09-21 15:40:07 · 1779 阅读 · 0 评论 -
浅谈Callable接口
前言犹记当年面试的时候,被问过一个问题,“实现多线程的方式有几种呀?”“两种”“哪两种?”“实现Runnable接口和继承Thread类”“是的,还有没有其他方式呢?”“记得还有一个什么接口,具体怎么用的忘记了”“Callable”这就来说说Callable吧。这个接口为什么会出现场景一我们先回想一下,我们实现Runnable接口创建多线程的时候,怎么做的吧?/* 打印从1到100的数*/原创 2017-09-20 15:54:59 · 566 阅读 · 1 评论 -
ConcurrentHashMap源码分析
前言ConcurrentHashMap是concurrent包里面出镜率很高的一个类,这个类是线程安全的Map,原来jdk1.8以前的ConcurrentHashMap采用的是锁分段机制来保证线程安全。如果关注这个锁分段技术的,可以参考这篇博文:http://blog.csdn.net/yansong_8686/article/details/50664351至于我,可能就不详细说锁分段机制了,这篇原创 2017-09-20 11:17:53 · 219 阅读 · 0 评论 -
Java中的Atomic类
前言每个东西的出现,肯定不是无缘无故的、Atomic类的出现是为了解决一些常见类型变量的原子操作问题而提出的。来来来,程序语言问题在哪里package com.pochi.juc;public class AtomicProblem { public static void main(String[] args) { AtomicExample atomicExample =原创 2017-09-19 20:29:42 · 719 阅读 · 0 评论 -
Volatile关键字
前言Volatile是一个关键字,也是一种同步的策略,它的出现是为了解决一个叫做内存可见性问题的,那首先就要来看一下,什么叫做内存可见性问题内存可见性问题我们先看一下一段代码package com.pochi.juc;public class VisibilityProblem { public static void main(String[] args) { Thread原创 2017-09-19 11:04:49 · 293 阅读 · 0 评论 -
双向阻塞队列BlockingDeque
前言前面我总结了一下关于BlockingQueue和BlockingQueue实现类的相关知识点,现在接下来看concurrent包的另一个接口BlockingDeque,BlockingDeque 接口表示一个线程安放入和提取实例的双端队列。就是说两段都可以进出的,实际上和单端的也差不多,就是单端变双端。 抛异常 特定值 阻塞 超时 插入 addFirst(o) offe原创 2017-09-18 15:32:43 · 745 阅读 · 0 评论 -
NIO——从小白到有概念
前言其实作为我个人,NIO,我前面也自己学过一些,但是吧,总觉得没有个概念,也就是说这个知识吧,他不是我的东西,我没法用自己的话去描述,只是简单的说,哦,NIO=New IO,和IO的区别就是不阻塞。然后好像有个选择器,和银行大堂经理一样的,引导人流,没了。我争取通过我的学习,向大家描述一个概念,建立起一个概念,NIO到底是个啥。NIO基本概念要说NIO的基本概念,和IO的对比是绕不过去的,因为与自原创 2017-09-25 09:23:08 · 326 阅读 · 0 评论 -
数组阻塞队列 ArrayBlockingQueue
前言ArrayBlockingQueue这个是数组阻塞队列,是BlockingQueue接口的一个实现类,它是一个容量有限的队列,一旦队列大小确认了就不能再改变了,使用方法,下面介绍。使用import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;public class Main原创 2017-09-16 17:00:37 · 263 阅读 · 0 评论 -
阻塞队列 BlockingQueue
BlockingQueue原理这个BlockingQueue是个接口,BlockingQueue 通常用于一个线程生产对象,而另外一个线程消费这些对象的场景。下图是对这个原理的阐述:用于生产者消费者模型,那就是多个线程可以操作生产,多个线程可以操作消费,如果生产过快大于队列的长度的话,会不让它生产了,让它阻塞。消费过快,也是同样的道理。BlockingQueue的方法但是由于应用的方法不同,你也可以原创 2017-09-16 16:45:55 · 167 阅读 · 0 评论 -
其他BlockingQueue实现类
前言其实,我本来也是想把所有的BlockingQueue接口的实现类都整一整,但是确实太多了,而且其实并不常用吧。所以就搞一篇写的清楚的实现,然后,要用再来看吧。DelayedQueueDelayedQueue是什么?DelayQueue是一个无界的BlockingQueue,用于放置实现了Delayed接口的对象,其中的对象只能在其到期时才能从队列中取走。这种队列是有序的,即队头对象的延迟到期时间原创 2017-09-15 21:50:42 · 248 阅读 · 0 评论 -
浅谈读写锁WriteReadLock
前言 在多线程开发中,经常会出现一种情况,我们希望读写分离。就是对于读取这个动作来说,可以同时有多个线程同时去读取这个资源,但是对于写这个动作来说,只能同时有一个线程来操作,而且同时,当有一个写线程在操作这个资源的时候,其他的读线程是不能来操作这个资源的,这样就极大的发挥了多线程的特点,能很好的将多线程的能力发挥出来。简单来说,可以多个线程同时读资源,但是写这种修改资源的操作只有一个线程能做。原创 2017-09-21 23:01:46 · 742 阅读 · 1 评论