CrazyPig的技术博客

让优秀成为一种习惯

写在离开顺丰科技之际

2018年7月30日,是我将要离开顺丰科技的日子,后知后觉,已经来了两年… 两年时间说长不长,说短不短,总是觉得自己经历了许多,到头来其实发现,丫,也就这么一点… 谨以此文,感慨一下这两年 离开是为了更好地出发,希望大伙都各自安好 进来纯属巧合 16年5月份,当时毕业快满一年的我...

2018-07-28 11:58:15

阅读数 671

评论数 6

JUC ExecutorCompletionService 分析

基本介绍 ExecutorCompletionService,JUC中提供的CompletionService接口实现,用于实现有限任务的执行以及任务结果的有序返回(先执行完的先被取出) 想象这样一种场景,有N个给定的计算任务,每个计算任务耗时各不相同,同时每个计算任务会返回一个结果,应用程序...

2018-07-20 14:59:43

阅读数 83

评论数 0

JUC ScheduledThreadPoolExecutor 分析

基本介绍 ScheduledThreadPoolExecutor,JUC中提供的调度线程池实现,可以用来执行定时任务,实现与Timer一样的功能特性,相比于Timer,ScheduledThreadPoolExecutor具有以下优势: 支持同时调度多种多样的调度任务,耗时的任务调度不会影响...

2018-07-19 13:56:16

阅读数 85

评论数 0

JUC FutureTask 分析

基本介绍 FutureTask,JUC中提供的一个Future接口实现类,主要作用是为了支持ThreadPoolExecutor的submit操作。 经过前面对JDK线程池的分析JUC ThreadPoolExecutor详解,我们知道在AbstractExecutorService中实现了s...

2018-07-15 11:35:33

阅读数 91

评论数 0

JUC ThreadPoolExecutor 分析

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

2018-07-14 11:49:46

阅读数 101

评论数 0

JUC PriorityBlockingQueue 分析

基本介绍 PriorityBlockingQueue JUC中阻塞队列的一种,支持阻塞的优先队列,容量最大可到int的最大值 - 8(Integer.MAX_VALUE - 8),容量可以自动扩展(内部实现)。PriorityBlockingQueue内部使用最小堆的思想来构建,使用数组形式存储...

2018-07-08 16:28:15

阅读数 49

评论数 0

JUC SynchronousQueue 分析

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

2018-07-08 12:13:36

阅读数 121

评论数 0

JUC DelayQueue 分析

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

2018-06-13 09:25:15

阅读数 102

评论数 0

JUC LinkedBlockingQueue 分析

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

2018-06-12 22:41:02

阅读数 98

评论数 0

JUC ArrayBlockingQueue 分析

先说说BlockingQueue BlockingQueue,JUC中定义的阻塞队列接口,为阻塞队列的实现定义了一些通用的方法,其中包括非阻塞操作以及阻塞操作 非阻塞操作: offer,add(add不常用):队列添加元素(队尾添加) poll,remove(remove不常用):移除队...

2018-06-11 22:11:08

阅读数 88

评论数 0

JUC CyclicBarrier 分析

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

2018-06-11 09:22:55

阅读数 105

评论数 0

JUC Semaphore 分析

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

2018-06-10 16:47:29

阅读数 115

评论数 0

JUC CountDownLatch 分析

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

2018-06-10 16:20:08

阅读数 112

评论数 0

JUC Atomic原子类分析

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

2018-06-09 23:38:40

阅读数 101

评论数 0

JUC ReentrantLock 分析

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

2018-06-09 14:53:31

阅读数 83

评论数 0

JUC AbstractQueuedSynchronizer分析

什么是AQS AQS即AbstractQueuedSynchronizer的简称,是实现JUC(java.utils.concurrent包)同步组件的通用基础骨架,JDK中基于此骨架实现的同步组件主要包括ReentrantLock、ReentrantReadWriteLock、CountDow...

2018-06-09 14:35:24

阅读数 90

评论数 0

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

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

2018-03-26 09:27:57

阅读数 267

评论数 0

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

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

2017-07-16 14:37:10

阅读数 2793

评论数 0

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

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

2017-06-26 15:04:32

阅读数 5580

评论数 1

Java Service Wrapper 详解

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

2017-06-25 22:15:58

阅读数 4819

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭