刷完了无数遍《生活大爆炸》后的一些感想

原本打算只写一些和编程相关的东西,为此还删除了之前写过的很多内容,但是最近又一次看完了《生活大爆炸》,突然有一些感受,想写下来。 说起来,最开始看《生活大爆炸》是在大学的时候,经常在宿舍吃饭的时候看几集,陆续也看了很多季,最初可能只是当作“下饭剧”来看的吧,被美式幽默所吸引,也没想到后面会看这么多次。 毕业之后,来到了深圳,大部分时候都是一个人,所以没事的时候就会看《生活大爆炸》,粗略估计应该看

继续阅读 »

Spring系列-记一次Spring事务嵌套引起的问题

从一个问题说起 最近一位同事在开发中遇到一个Spring事务嵌套的问题,导致程序没有按照他的想法执行,所以记下来,顺便了解一下Spring事务嵌套和传播机制的相关问题。 具体的问题是这样的,他写了这样一段代码,具体是在一个外层事务方法中调用了另一个类的事务方法对数据库进行更新,并且外层使用了try-catch捕获,目的是不管内层事务方法是否抛出异常,都不要影响外层事务方法的执行。 @Servic

继续阅读 »

关于Java多线程的一切

前言 其实起这个名字有点言过其实,自然是不可能在一篇文章中讲清多线程的所有问题。我的本意是想把多线程中的很多零碎知识串联到一起。 不知道大家在学习多线程的时候有没有一种感觉,知识很零碎,很多概念性的东西,例如:原子性,可见性,有序性,volatile,Synchronized,ReentrantLock,CAS等等,网上有很多关于这些知识的讲解,但是总觉得没能把这些知识结合起来,volatile

继续阅读 »

Java并发-通过实例分析AbstractQueuedSynchronizer条件队列Condition源码

前一篇文章以ReentrantLock的非公平锁为例,讲了AQS的原理,这篇文章打算分析一下AQS中的条件队列,不过先把上次剩下的讲完,先来讲讲公平锁吧。 对非公平锁不太清楚的可以看看上一篇文章。 ReentrantLock的公平锁 上篇文章我们讲了,非公平锁会试图两次去抢占锁,然后才会去排队,那么可想而知,对于公平锁而言,必须要看看有没有线程在排队,有的话就只能乖乖排在阻塞队列的末尾,没有线程

继续阅读 »

Java并发-以ReentrantLock非公平锁分析AbstractQueuedSynchronizer源码

AbstractQueuedSynchronizer(为了方便,以下称为AQS)是JDK中一个非常重要的基础同步组件,我们日常用到的类似ReentrantLock,CountDownLatch等都是基于AQS来实现的。 本系列大概会分为3-4篇文章来分析,包括了AQS的源码和基于AQS来实现的同步组件的源码。 我会尽力写得清晰明了,希望能对得起大家花的时间,如果有写得不对的或者模糊不清的,大家可

继续阅读 »