抛弃性能不佳的System.currentTimeMillis(),手撸一个低开销获取时间戳工具
herman 3年前 (2021-09-09) 3056浏览
大家好,我是业余草,这是我的第 447 篇原创! 你或许听说过,在 Java 中调用 System.currentTimeMillis() 会有一些性能开销,在某些场景下,System.nanoTime() 更具优势! 比如,测试方法的...
herman 3年前 (2021-09-09) 3056浏览
大家好,我是业余草,这是我的第 447 篇原创! 你或许听说过,在 Java 中调用 System.currentTimeMillis() 会有一些性能开销,在某些场景下,System.nanoTime() 更具优势! 比如,测试方法的...
herman 3年前 (2021-08-15) 2127浏览
通过最近一段时间的试验,我发现周六周日写原创,没多少人看! 业余草累计原创444篇 因此,以后尽量将周六周日写的原创文章,放在周一和周五之间发布! Java 程序员需要经常关注一些国外大神级别程序员的动向。比如,我经常关注...
herman 4年前 (2021-06-10) 1940浏览
想不到,synchronized + @Transactional 造成的重大线程安全问题 昨天,微信群里一位小伙伴遇到了一个 synchronized + @Transactional 事务造成端午礼品分配不均的问题,最终导致数据不一致。今...
herman 4年前 (2020-07-26) 2791浏览
这个问题很多高级工程师可能都不会,因为平时很少用到。 但是在面试中就有可能经常会遇到这样的问题:在主线程中有两个子线程,如何能让着两个子线程能顺序的执行? 答案自然是用 join 来使得两个线程顺序执行。说到这里,我前面也有类似的文章,最近又...
herman 5年前 (2020-01-11) 2811浏览
最近看到一篇很好的 volatile 可见性原理总结,分享给大家! volatile 是一种轻量且在有限的条件下线程安全技术,它保证修饰的变量的可见性和有序性,但非原子性。相对于 synchronize 高效,而常常跟 synchronize...
herman 5年前 (2019-07-11) 5018浏览
早上起来,就发现有网友私信我,说去面了一下阿里,找了一下打击。问了为什么网上大量使用 ThreadLocal 的源码都会加上 private static? 他被难住了,因为他从来都没有考虑过这个问题。 这个问题,既然是阿里的面试题,那...
herman 5年前 (2019-07-02) 3326浏览
我们都知道,ArrayList 天生就不是线程安全的,但是很多人也就是道听途说而已。并没有实际的进行测试,也并不清楚 ArrayList 为什么不是线程安全的! 这不,昨天还有人问我为什么?说面试官让他写一个 bug。答案其实很简单,今天我们...
herman 6年前 (2019-05-26) 2649浏览
最近一个同学发来消息说,公司里有一段代码使用的线程经常会发生一些莫名其妙的问题。让我帮忙看看,我仔细看了很多遍线程的相关代码。最后注意到了 InterruptException 异常,把想法和 demo 代码给他说了后,问题果真被解决了。 危...
herman 6年前 (2019-03-14) 2882浏览
很多人都想进 BAT,但是并不是每个人都能如愿。BAT 的面试非常的严格,今年春招,阿里的一道线程面试题,就淘汰了无数的人! 今天我对这道题,分别用了 3 种不同的方法实现了,供大家参考! 题目如下: 通过N个线程顺序循环打...
herman 6年前 (2019-02-25) 9157浏览
最近,我们的电商项目中需要一个限流功能,我打算使用令牌桶实现。 然后,我就网上查了一些关于令牌桶算法的文章,用 Java 实现了一个。但是其中有一点问题,所以,我就想参考一下 guava 中 RateLimiter 的实现。但是发现 com...
herman 6年前 (2019-02-20) 7509浏览
Java 在使用 MongoDB 的时候,看起来和使用 MySQL 有些不一样。 在用 MySQL 的时候,通常我们会创建一个连接池。每次增删改查都会从池子里获取一个已经存在的连接,这样做会减少新建连接而造成的资源浪费。 在 Mong...
herman 6年前 (2019-02-14) 3772浏览
关于线程安全的专有名词有一大堆。你们突然之间问我这个名词是什么意思,那个名词是什么意思我还真不一定能给你准确的回答。这还别说一门语言一堆名词。其实有些名词叫法不同,实际上就是一个意思。 A 语言有这个名词,B 语言就起另外一个名词。不能大胆...
herman 6年前 (2018-11-21) 4270浏览
阅读过上篇文章的网友,可能会发现上一篇文章中已经出现了一个自旋锁! 什么?怎么可能?你在上一篇文章中连一个自旋锁的字都没提,怎么可能有自旋锁(欺骗我农村来的是吧,一定是)? 我怎么可能会骗你呢?就算骗了你,也骗不了其他人,那么多读者,...
herman 6年前 (2018-11-20) 3680浏览
前面写了好几篇关于 HashMap 的文章,有人在微信群里给我反馈说想看点别的。其实我也想换了,HashMap 写来写去就那么点内容,还能写出 bug 出来(大笑)!所以,索性我今天就换个新内容!乐观锁 VS 悲观锁! 其实吧,写锁也写不出...
herman 6年前 (2018-11-20) 2481浏览
我在前面的文章《Java 线程安全的3大核心:原子性、可见性、有序性》中已经说到了什么是线程安全!根据这篇文章,我们对照着 HashMap 来说说它为什么不是线程安全的? 前面我也强调过多次,回答是不是线程安全的请从:原子性、可见性、有序性...