7 ZzzCrazyPig

尚未进行身份认证

让优秀成为一种习惯

等级
TA的排名 1w+

写在离开顺丰科技之际

2018年7月30日,是我将要离开顺丰科技的日子,后知后觉,已经来了两年… 两年时间说长不长,说短不短,总是觉得自己经历了许多,到头来其实发现,丫,也就这么一点… 谨以此文,感慨一下这两年 离开是为了更好地出发,希望大伙都各自安好进来纯属巧合16年5月份,当时毕业快满一年的我,在广州头脑发热,突然有一个念头,我要离开我的第一家公司!恰逢此时,某某网的猎头来电推荐了顺丰科技数据...

2018-07-28 11:58:15

JUC ExecutorCompletionService 分析

基本介绍ExecutorCompletionService,JUC中提供的CompletionService接口实现,用于实现有限任务的执行以及任务结果的有序返回(先执行完的先被取出)想象这样一种场景,有N个给定的计算任务,每个计算任务耗时各不相同,同时每个计算任务会返回一个结果,应用程序需要做到当每个计算任务完成之后,尽快地对计算结果进行处理(展示,二次处理等等)。假设我们用普通的Thr...

2018-07-20 14:59:43

JUC ScheduledThreadPoolExecutor 分析

基本介绍ScheduledThreadPoolExecutor,JUC中提供的调度线程池实现,可以用来执行定时任务,实现与Timer一样的功能特性,相比于Timer,ScheduledThreadPoolExecutor具有以下优势:支持同时调度多种多样的调度任务,耗时的任务调度不会影响其他调度任务的调度(Timer为单线程执行,若存在多个调度任务,则可能任务之间的执行时间会影响到各自的...

2018-07-19 13:56:16

JUC FutureTask 分析

基本介绍FutureTask,JUC中提供的一个Future接口实现类,主要作用是为了支持ThreadPoolExecutor的submit操作。经过前面对JDK线程池的分析JUC ThreadPoolExecutor详解,我们知道在AbstractExecutorService中实现了submit方法,以提交Callable为例:public <T> Future&l...

2018-07-15 11:35:33

JUC ThreadPoolExecutor 分析

基本介绍ThreadPoolExecutor,JUC提供的线程池实现,用于高效执行应用中的多种任务,通过使用多线程并发执行任务,来提高效率;另外相比于自己new Thread去跑任务,使用线程池具有更好的性能,因为线程的创建与销毁需要一定的时间,线程池通过将线程管理起来,new完之后一般不立刻销毁,而是不断地等待处理任务。另外通过线程池来规范线程的使用,可以有效避免滥用线程使用示例...

2018-07-14 11:49:46

JUC PriorityBlockingQueue 分析

基本介绍PriorityBlockingQueue JUC中阻塞队列的一种,支持阻塞的优先队列,容量最大可到int的最大值 - 8(Integer.MAX_VALUE - 8),容量可以自动扩展(内部实现)。PriorityBlockingQueue内部使用最小堆的思想来构建,使用数组形式存储元素构造时建议定义好Comparator的实现并传入,在内部实现里面将使用传入的Comparato...

2018-07-08 16:28:15

JUC SynchronousQueue 分析

基本介绍SynchronousQueue JUC阻塞队列的一种,队列无实际容量,一个put操作必须等待一个take操作的执行,才会解除阻塞状态。将put考虑为生产者的话,需要等待消费者,即take操作来取它的数据,才能够从阻塞等待中返回。数据在SynchronousQueue中是被直接传递的,由put线程传递给take线程使用场景SynchronousQueue的使用场景比较少见,...

2018-07-08 12:13:36

JUC DelayQueue 分析

基本介绍DelayQueue,JUC阻塞队列的一种,依赖ReentrantLock(非公平实现)、Condition以及PriorityQueue来实现阻塞等待获取超时元素。队列中的元素需要超时后才能够被取出,若多个线程尝试获取还没有到超时结束的队列首元素,那么这些线程将会挂起等待(依赖Condition await 以及 超时wait)。DelayQueue是阻塞队列中的一种实现,因此它需要...

2018-06-13 09:25:15

JUC LinkedBlockingQueue 分析

基本介绍JUC里面提供的有界阻塞队列,基于链表方式实现默认队列大小为Integer.MAX_VALUE,给人的感觉是近乎无界,在构造的时候可以自行指定队列的容量内部维护两把锁(putLock与takeLock),用以优化存取的并发性能;put/offer只需要获取putLock,而take/poll只需要获取takeLock,细化了锁粒度,使得存取操作可以并发进行,相比ArrayBloc...

2018-06-12 22:41:02

JUC ArrayBlockingQueue 分析

先说说BlockingQueueBlockingQueue,JUC中定义的阻塞队列接口,为阻塞队列的实现定义了一些通用的方法,其中包括非阻塞操作以及阻塞操作非阻塞操作: offer,add(add不常用):队列添加元素(队尾添加)poll,remove(remove不常用):移除队列元素(队头移除)阻塞操作: put:队列添加元素,通常在有界队列实现里面,当队列元素个数达到容量...

2018-06-11 22:11:08

JUC CyclicBarrier 分析

基本介绍CyclicBarrier可实现多个线程同时等待,达到一个共同临界点,才一起往下执行,并且,可以在达到共同临界点的时候,触发一个action。这个同步组件实现的功能看似与CountDownLatch一样,但是与CountDownLatch只能被使用一次不一样,CyclicBarrier可被重复多次使用。像CountDownLatch、Semaphore、Lock等同步组件,都是通过...

2018-06-11 09:22:55

JUC Semaphore 分析

基本介绍Semaphore,JUC中提供的一个并发组件,根据字面理解是信号量的意思。Semaphore能够实现的功能是允许多个线程同时获取共享资源,实际是共享锁(基于AQS的共享实现模式)的实现。获取不到资源的线程会进行阻塞等待,直到其他线程释放资源,当前阻塞线程尝试获取共享资源成功,则从阻塞等待中返回,否则继续阻塞等待。每个资源称为一个permit(许可),由Semaphore内部持有。Se...

2018-06-10 16:47:29

JUC CountDownLatch 分析

简介JUC提供的并发组件CountDownLatch可以实现类似Thread.join的效果,实现等待多个线程执行结束以后才执行接下来逻辑的功能(一个线程阻塞等待其他多个并发任务线程执行完任务之后才解除阻塞)eg:package com.crazypig.juc;import java.util.concurrent.CountDownLatch;public class Co...

2018-06-10 16:20:08

JUC Atomic原子类分析

基本介绍JUC中atomic子包里面提供了很多Atomic类,用于多线程并发下原子更新(CAS)不同类型对象,主要包括以下几大类:原子更新基本类型类AtomicIntegerAtomicLongAtomicBoolean原子更新数组类型AtomicIntegerArrayAtomicLongArrayAtomicReferenceArray原子更...

2018-06-09 23:38:40

JUC ReentrantLock 分析

基本介绍ReentrantLock,可重入锁,基于AQS实现的互斥锁,在互斥锁之上支持可重入。可重入的意思是,同一个线程可以多次调用lock方法,而不会导致自己等待自己锁的释放。根据内部实现,分为公平性可重入锁和非公平性可重入锁。由构造函数来指定其公平性,默认使用非公平性实现。ReentrantLock实现了Lock接口,实现的接口如下:public interface Lock {...

2018-06-09 14:53:31

JUC AbstractQueuedSynchronizer分析

什么是AQSAQS即AbstractQueuedSynchronizer的简称,是实现JUC(java.utils.concurrent包)同步组件的通用基础骨架,JDK中基于此骨架实现的同步组件主要包括ReentrantLock、ReentrantReadWriteLock、CountDownLatch和Semaphore。理解好这个基础骨架实现的功能,就能够更好地去理解其他组件的实现。...

2018-06-09 14:35:24

Guava 对JDK Future异步编程的扩展支持

JDK FutureJDK中Future代表了异步计算的结果,通过向线程池ThreadPoolExecutor(通常使用ExecutorService接口) submit 一个Callable,可返回一个Future, eg:ExecutorService jdkExecutor = Executors.newFixedThreadPool(2);Future<String&g...

2018-03-26 09:27:57

Ubuntu Clion MySQL 5.7 源码调试环境搭建

一直想在linux下通过调试mysql源码来学习mysql。本文记录Ubuntu14下编译mysql5.7.18源码, 导入clion进行调试的过程

2017-07-16 14:37:10

Mycat使用篇: Mycat启动脚本及脚本配置文件详解

介绍Mycat启动脚本及其脚本配置文件

2017-06-26 15:04:32

Java Service Wrapper 详解

Java Service Wrapper(JSW) 可用于将Java后台程序包装成一个后台服务运行。除此以外,JSW还可以在你的Java程序挂掉以后,自动帮你把服务再次拉起,相当于提供了一个守护进程的功能

2017-06-25 22:15:58

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!