首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
think123
掘友等级
Java程序员
|
微信公众号:think123
一个普普通通的程序员
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
131
文章 121
沸点 10
赞
131
返回
|
搜索文章
最新
热门
CountDownLatch和CyclicBarrier,我该怎么选?
CountDownLatch 和 CyclicBarrier 是 Java 并发包提供的两个非常易用的线程同步工具类,把它们放在一起介绍是因为它们之间有点像,又很不同。 CountDownLatch 主要用来解决一个线程等待多个线程的场景,可以类比旅游团团长要等待所有的游客到齐…
Java如何实现乐观锁和悲观锁?
ReentrantReadWriteLock支持读写锁,StampedLock支持写锁、悲观锁读和乐观读(无锁)。其中写锁、悲观读锁的语义和ReentrantReadWriteLock中的写锁、读锁语义一样,都是允许多个线程同时获取悲观锁读,但是只允许一个线程获取写锁,写锁和悲…
Java中读写锁是如何实现的?
针对读多写少的场景,Java提供了另外一个实现Lock接口的读写锁ReentrantReadWriteLock(RRW),之前分析过ReentrantLock是一个独占锁,同一时间只允许一个线程访问。 而 RRW 允许多个读线程同时访问,但不允许写线程和读线程、写线程和写线程同…
我为什么要安装两个traefik?
之前有说过,我用traefik做网关,无论是内外网请求都会经过网关。 但是我们有一部分API是只有内网会用,为了安全,我们要保证这些内网的API只有内网可以访问到。 但是由于之前的设置,这些API是匿名访问的,如果修改为需要权限,那么需要其他依赖于我们服务的team来做对应的修…
深入AQS共享锁的每一行代码
之前分析过AQS的源码,但只分析了独占锁的原理。 而刚好我们可以借助Semaphore来分析共享锁。 Java SDK 里面提供了 Lock,为啥还要提供一个 Semaphore ?其实实现一个互斥锁,仅仅是 Semaphore 的部分功能,Semaphore 还有一个功能是 …
ReentrantLock的这几个问题你都知道吗?
之前分析AQS的时候,了解到AQS依赖于内部的两个FIFO队列来完成同步状态的管理,当线程获取锁失败的时候,会将当前线程以及等待状态等信息构造成Node对象并将其加入同步队列中,同时会阻塞当前线程。当释放锁的时候,会将首节点的next节点唤醒(head节点是虚拟节点),使其再次…
这波对AbstractQueuedSynchronizer的解析,我给自己打99分!
看了Synchronized的实现方式之后,再来看JDK的AQS,感觉就比较简单了,它的行为有点像银行排队,银行有很多窗口处理很多业务,不同的窗口处理不同的业务,比如有个人业务,也有金融业务,也有公司业务等,每个窗口都有很多人排队。一般来讲当你在窗口处理业务的时候是不会有人来打…
那些去请求锁的线程怎么样了?
不知道你有没有想过,那些去申请锁的线程都怎样了?有些可能申请到了锁,马上就能执行业务代码。但是如果有一个锁被很多个线程需要,那么这些线程是如何被处理的呢? 今天我们走进synchronized 重量级锁,看看那些没有申请到锁的线程都怎样了。 之前文章分析过synchroinze…
拥抱Kubernetes,再见了,SpringBoot @Scheduled
项目开发中总是需要执行一些定时任务,比如定时处理数据之后发送邮件,定时更新缓存等等。 项目框架使用的是SpringBoot,所以之前定时任务使用的是SpringBoot中的@Scheduled。可是这种方式并不适合我们现在的cloud环境,为了更加cloud native一点,…
谁再说Synchronized慢,我跟谁急
我们都知道Java之所以可以一次编译到处运行,完全是因为字节码的原因,字节码就相当于中间层屏蔽了底层细节。但是想要在机器执行,最终还是要翻译成机器指令。 而JVM是通过C/C++来编写的,Java程序编译后,会产生很多字节码指令,每一个字节码指令在JVM底层执行的时候又会编程一…
下一页
个人成就
优秀创作者
文章被点赞
887
文章被阅读
246,150
掘力值
6,441
关注了
4
关注者
192
收藏集
10
关注标签
35
加入于
2016-07-22