摘要:
如何让线程主动让出CPU 由于等待一个锁的线程只有在获得这把锁之后,才能恢复运行,所以让持有锁的线程在不再需要锁的时候及时释放锁是很重要的。在以下情况下,持有锁的线程会释放锁:(1)执行完同步代码块,就会释放锁。(synchronized执行完毕解锁) (2)在执行同步代码块的过程中,遇到异常而导致 阅读全文
摘要:
Node节点结构 private static class Node<E> { E item; Node<E> next; Node<E> prev; Node(Node<E> prev, E element, Node<E> next) { this.item = element; this.ne 阅读全文
摘要:
变量的可见性分析 关键字:可见性案例验证、volatile、Unsafe中loadForce方法实现读屏障 可见性保证: 同步 volatile 魔术类内存屏障 内存屏障说明 loadForce实现volatile读(缓存数据置为无效、重新从主存加载) storeForce实现volatile写(数 阅读全文
摘要:
RabbitMQ 和 Kafka 的显著差异 RabbitMQ 是一个消息代理,但是 Apache Kafka 是一个分布式流式系统。好像从语义上就可以看出差异,但是它们内部的一些特性会影响到我们是否能够很好的设计各种用例。 例如,Kafka 最适用于数据的流式处理,但是 RabbitMQ 对流式中 阅读全文