09 2018 档案

java线程池源码分析
摘要:我们在关闭线程池的时候会使用shutdown()和shutdownNow(),那么问题来了: 1. 这两个方法又什么区别呢? 2. 他们背后的原理是什么呢? 3. 线程池中线程超过了coresize后会怎么操作呢? 为了解决这些疑问我们需要分析java线程池的原理。 1 基本使用 1.1 继承 阅读全文

posted @ 2018-09-29 15:20 吼吼吼的吼 阅读(506) 评论(0) 推荐(0)

AQS分析笔记
摘要:1 介绍 AQS: AbstractQueuedSynchronizer,即队列同步器。是构建锁或者其他同步组件的基础框架。它维护了一个volatile int state(代表共享资源)和一个FIFO线程等待队列(多线程争用资源被阻塞时会进入此队列)。 state的访问方式有: getState 阅读全文

posted @ 2018-09-26 20:56 吼吼吼的吼 阅读(233) 评论(0) 推荐(0)

select poll和epoll
摘要:select poll epoll都是IO多路复用机制。这里的复用其实可以理解为复用的线程,即一个(或者较少的)线程完成多个IO的读写。这里总结下这三个函数的区别。 1 select 1.1 select原理分析 1 select的函数原型是 使用的时候需要将fd_set从用户空间copy到内 阅读全文

posted @ 2018-09-21 11:30 吼吼吼的吼 阅读(302) 评论(0) 推荐(0)

kafka partiton迁移方法与原理
摘要:在kafka中增加新的节点后,数据是不会自动迁移到新的节点上的,需要我们手动将数据迁移(或者成为打散)到新的节点上 1 迁移方法 kafka为我们提供了用于数据迁移的脚本。我们可以用这些脚本完成数据的迁移。 1.1 生成partiton分配表 1.1.1 创建json文件topic to 阅读全文

posted @ 2018-09-09 17:17 吼吼吼的吼 阅读(2248) 评论(0) 推荐(0)

park和unpark
摘要:1 介绍 LockSupport类是Java6(JSR166 JUC)引入的一个类,提供了基本的线程同步原语。LockSupport提供的两个主要方法就是park和unpark。 park译为“停车”,官方文档意为:许可。为了方便理解,在这里我们可以理解为阻塞,等待,挂起,而unpark我们理解 阅读全文

posted @ 2018-09-04 09:30 吼吼吼的吼 阅读(7490) 评论(0) 推荐(2)

导航