
java进阶
FmZero
在职人员
展开
-
Fork/Join WORK 实操 切分百万数据分片执行积分赠送
Forkjoin 将一个任务拆分成小任务时才有用处。fork-join池是是一个work-stealing工作窃取线程池。每个工作线程维护本地任务dequeue。当执行新的任务时它可以将其拆分分成更小的任务执行,如果它是足够小,但是dequeue没有本地线程了,它的会“偷”,从一个随机线程的队列中偷窃一个并把它放在自己的队列中。但是如果任务还没有拆,他还是得完成手上一些工作。public void execJob() { // 数据库控制并发 long start = System原创 2020-11-18 15:07:32 · 348 阅读 · 0 评论 -
生产环境亿级用户并发发券记录
背景:产品需要,需消耗原有卡积分,转移到新卡。进行积分抽奖活动,其中用户可使用批量抽奖功能(10次)【单次请求第三方接口发送积分】。分析:1 方法需进行防并发校验。【已有自定义注解,采用userId为key,redis进行防并发处理 ttl 获取-1 key没有设置失效时间; -2 key不存在; 正数 key的失效时间 】 2 采用单线程循环及多线程两种方法进行积分发放,redis中做开关切换 3 用户当日抽奖次数记redis,incry关键代码实...原创 2020-09-15 20:02:22 · 291 阅读 · 0 评论 -
BIO NIO AIO
BIO是一个连接一个线程。同步阻塞的BIONIO是一个请求一个线程。同步非阻塞AIO是一个有效请求一个线程。异步非阻塞BIO与NIO一个比较重要的不同,是我们使用BIO的时候往往会引入多线程,每个连接一个单独的线程;而NIO则是使用单线程或者只使用少量的多线程,每个连接共用一个线程。Java对BIO、NIO、AIO的支持:Java BIO : 同步并阻塞,服务器实现模式为一个...转载 2018-08-06 11:30:33 · 1034 阅读 · 0 评论