Java 并发编程——CountdownLatch

一、前言今天来介绍下 concurrent 包下的一个工具类——CountDownLatch,这算是一个比较实用的工具类,在我们日常开发中使用的比较多,而且 API 也很简单,总结记录下。 注:本文的源码浅析章节参考文章:《CountDownLatch详解》 二、基本使用CountdownLatch 的主要功能是允许一个或多个线程等待直到在其他线程中一组操作执行完成,用人话说就是多个线程分别执...

Java 并发编程——ReentrantLock

一、简介ReentrantLock 是一个可重入且独占式的锁,相较于传统的 Synchronized,它增加了轮询、超时、中断等高级功能。其类图如下: ReentrantLock 是 java.util.concurrent(J.U.C)包中的锁,相比于 synchronized,它多了以下高级功能: 1. 等待可中断   当持有锁的线程长期不释放锁的时候,正在等待的线程可以...

彻底搞定 Java 参数传递问题

一、引言在开始正文前照例扯扯闲话,说说这篇文章的来源把。今天同事在处理一个 BUG 时产生了疑问,代码类似这样: 12345678910public static void main(String[] args) { User user = null; func(user); String name = user.getName();}public stati...

Java 设计模式——观察者模式

一、前言好久没更新设计模式系列了,这周闲来无事,就水一把,介绍个简单的——观察者模式。 所谓观察者模式,本质是就是发布与订阅,在日常生活中发布/订阅的例子有很多,比如大家微信里面的公众号,你可以订阅微信公众号,公众号发布文章后,微信会将文章推送给你。。。 二、发布 / 订阅在上面提到的公众号的例子,就是一个观察者模式。 你作为一名普通用户就是观察者,你可以关注或者取关公众号,当公众号发布消息时,你...

理解 BigDecimal 的 RoundingMode

在金融等对数据精度计算要求较高的领域,传统 double 运算无法满足要求, BigDecimal 类应运而生。实际使用中,RoundingMode 这个枚举类控制着小数的舍位原则,本文对该枚举类进行介绍。 一、RoundingMode.DOWN等价枚举: BigDecimal.ROUND_DOWN 舍位原则: 粗暴截断舍弃位,不考虑任何进位舍位操作 例: Scale = 2 1234Origin...

Java Switch 是如何支持 String 的,为什么不支持 long

我们知道 Java Switch 支持byte、short、int 类型,在 JDK 1.5 时,支持了枚举类型,在 JDK 1.7 时,又支持了 String类型。那么它为什么就不能支持 long 类型呢,明明它跟 byte、short、int 一样都是数值型,它又是咋支持 String 类型的呢? 一、结论不卖关子,先说结论: switch 底层是使用 int 型 来进行判断的,即使是枚举、S...
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×