自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

软件开发与架构领域 -体系化知识分享

理清软件领域各种似是而非的概念,深刻理解本质

  • 博客(95)
  • 资源 (4)
  • 收藏
  • 关注

原创 Java多线程 -- JUC包源码分析15 -- SynchronousQueue与CachedThreadPool

在前面分析工具类Executors的时候,提到了CachedThreadPool:其线程数会无限增大,每来一个新请求,就会new一个Thread,其maxPoolSize = Integer.MAX。 其构造函数如下:public static ExecutorService newCachedThreadPool() { return new ThreadPoolExecutor

2016-09-11 16:19:16 1958

原创 Java多线程 -- JUC包源码分析14 -- ScheduledThreadPoolExecutor与DelayQueue源码分析

DelayQueueScheduledThreadPoolExecutor

2016-09-10 20:28:16 1258

原创 Java多线程 -- JUC包源码分析13 -- Callable/FutureTask源码分析

关于Runnable,我们都已经很熟悉了。在上一篇,我们也分析了ThreadPoolExecutor用来执行任务的接口execute,如下所示:public interface Runnable { public abstract void run();}public void execute(Runnable command) { 。。。 }这里的execute(..)是没有返回值

2016-09-10 20:21:04 1647

原创 Java多线程 -- JUC包源码分析12 -- ThreadPoolExecutor源码分析

在JUC包中,线程池部分本身有很多组件,可以说是前面所分析的各种技术的一个综合应用。从本文开始,将综合前面的知识,逐个分析线程池的各个组件。 -Executor/Executors -ThreadPoolExecutor使用介绍 -ThreadPoolExecutor实现原理 –ThreadPoolExecutor的中断与优雅关闭 shutdown + awaitTermination –

2016-09-09 15:17:30 3285 3

原创 Java多线程 -- JUC包源码分析11 -- CyclicBarrier源码分析

在前面的篇章中,讲解了ReentrantLock + Condition,并讲述了2者结合的一个典型应用:ArrayBlockingQueue/LinkedBlockingQueue。今天讲述2者结合的另一个典型应用:CyclicBarrier。CyclicBarrier的概念要介绍CyclicBarrier这个概念,可以从下面这个比喻开始:一个小公司的所有人周六要出去团建,大家提前商定好周六早上

2016-09-08 23:19:23 1091

原创 Java多线程 -- JUC包源码分析10 -- ConcurrentLinkedQueue源码分析

在前面的篇章中,我们详细分析了AQS,并提到了里面一个关键数据结构:所有阻塞线程组成的一个等待队列,这个队列是用单向无锁链表实现的。今天所讲的ConcurrentLinkedQueue,其实现和AQS中的无锁队列基本一样。所以,如果你深刻理解了AQS,ConcurrentLinkedQueue也就知道了。出于内容的完整性,在此还是列一下其源码:public class ConcurrentLinke

2016-09-08 22:53:07 966

原创 Java多线程 -- JUC包源码分析9 -- AbstractQueuedSynchronizer深入分析-- Semaphore与CountDownLatch

在前面分析ReentrantLock/ReentrantReadWriteLock的时候,我们已经对AQS进行过分析。在初步了解了AQS之后,本篇试图对其进行一个更为系统性的分析。因为AQS是为整个同步框架的基石,不光是锁,很多其他同步组件,比如Semaphore, CountDownLatch,也都是建立在AQS之上。 -AQS–同步框架的基石 -AQS的3个核心技术原理 –AQS源码解析

2016-09-07 23:51:04 1760

原创 Java多线程 -- JUC包源码分析8 -- 对happen before的深刻理解

说到happen before,很多人都知道。但因为其理论的抽象,以及在语义上的微妙,使得对happen before的理解,往往陷入“隔靴搔痒“的境地。本文试图宏观性、多角度的来分析围绕happen before的诸多问题,从而搞清楚我们为什么需要happen before?-可见性 -重排序 -happen before -共享存储模型 vs. 消息模型可见性说到可见性,很多人立马会想到v

2016-09-06 12:03:39 1419

原创 Java多线程 -- JUC包源码分析7 -- 对Interrupt的深刻理解

在前面的源码分析中,很多地方用到了Interrupt,在此,对Interrupt做一个深刻总结。一、“中断“这个词有误区,它并不是真的中断一个线程,准备说,应该叫做“中断轻量级阻塞”。什么叫“轻量级阻塞”呢? 就是调用以下这几个函数,所造成的线程阻塞。此时线程是处于Waiting状态,会响应t.interrupt。响应方式,前4个,是直接抛出InterruptException异常,最后1个,是

2016-09-05 23:57:12 1176

原创 Java多线程 -- JUC包源码分析6 -- ConcurrentHashMap

ConcurrentHashMap的源码,从JDK1.6到JDK1.7, 经历了不少变化。在JDK1.7中,好几个地方使用了sun.misc.Unsafe里面的函数,比如UNSAFE.putOrderedObject, UNSAFE.getObject..。对于这些函数的原理,笔者也不甚理解。为此,本文的讨论只针对JDK1.6。 -锁分离 -读不加锁,锁加锁 -弱一致性, happen b

2016-09-05 21:21:10 1497

原创 Java多线程 -- JUC包源码分析5 -- Condition/ArrayBlockingQueue/LinkedBlockingQueue/Deque/PriorityBlockingQueue

-await/signal/signalAll与wait/notify/notifyAll区别 -Condition源码分析 -各种BlockingQueue源码分析await,signal,signalAll以下代码,分别展示了wait/notify, 和Condition的await/signal的用法Object o = new Object();synchronized(o) /

2016-09-05 01:34:14 2012

原创 Java多线程 -- JUC包源码分析4 -- 各种锁与无锁

说到锁,想必很多人就会被如下的各种专业名词绕晕了。本文试图厘清关于锁的各种概念,从而对锁有一个全面而深入的理解。–自旋锁/阻塞锁 –独占锁(排它锁)/共享锁(读写锁) –公平锁/非公平锁 –偏向锁/非偏向锁 –可重入锁 –悲观锁/乐观锁 –ReentrantLock源码分析 –AbstractQueuedSynchronized(队列同步器) –源码分析 –ReentrantRead

2016-09-03 21:18:58 2684 1

原创 Java多线程 -- JUC包源码分析3-- volatile/final语义

-volatile应用1 – 内存可见性 – JMM内存模型 -volatile应用2 – 原子性 -volatile应用3 – 构造函数逸出/DCL问题(Double Checking Locking) -final应用1 – 避免构造函数重排序 -final应用2 – CopyOnWrite -atomic数组/volatile数组/final数组/ -指令重排序,happen be

2016-09-03 21:13:40 2057

原创 Java多线程 -- JUC包源码分析2 -- Copy On Write/CopyOnWriteArrayList/CopyOnWriteArraySet

上1篇讲述了Java并发编程的第1个基本思想–CAS/乐观锁,这1篇接着讲述并发编程的第2个基本思想:CopyOnWrite - CopyOnWrite基本思想 - CopyOnWriteArrayList - CopyOnWriteArraySet - AtomicReference的一个应用 - 总结CopyOnWrite基本思想 CopyOnWrite, 顾名思义

2016-09-03 21:05:28 1829

原创 Java多线程 -- JUC包源码分析1 -- CAS/乐观锁

乐观锁思想乐观锁的几种具体实现Java CAS原子操作/AtomicInteger实现ABA问题/AtomicStampedReference实现Mysql 乐观锁实现Mysql MVCC总结乐观锁思想问题的提出: 当多个线程或客户端并发修改同1份数据时,不加锁,如何实现互斥访问?乐观锁基本思路: 给数据本身加一个版本号字段,读取和写入时都不加锁。数据读出来的时候,此时版本号

2016-09-03 17:04:32 2900 1

cocos2d-x多线程异步加载资源

项目中摘抄出来的代码,在LoadingLayer::onEnter()中,开了一个boost thread来加载资源

2014-08-08

自编用openGL实现3D分形树,分形山

大多数分形程序都是二维的,本人提供一个3DIFS分形树程序,以及分形山。 程序很简单,适合初学者.

2008-12-02

最优化理论与算法-陈宝林著

关于最优化的国内很经典的一本书,网上很难找到

2008-12-20

自编的VC实现俄罗斯方块

自已编写的用VC实现的俄罗斯方块,程序思路清晰,小而易懂

2008-12-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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