
并发
文章平均质量分 93
vcjmhg
这个作者很懒,什么都没留下…
展开
-
Atomic原子类的使用及其原理
本文总结了常用的原子类,及其内部实现的原理--CAS原理。Java 提供的原子类能够解决一些简单的原子性问题,但你可能会发现,上面我们所有原子类的方法都是针对一个共享变量的,如果你需要解决多个变量的原子性问题,建议还是使用互斥锁方案。原子类虽好,但使用要慎之又慎。原创 2021-08-02 21:18:36 · 1634 阅读 · 0 评论 -
Kafka的核心原理
本文主要以消息引擎的角度出发,介绍Kafka的设计原理,整篇文章分成四个大篇幅:一:Kafka消息格式以及演变过程,并且对消息的压缩也做了介绍二:Kafka实现消息传输的方式,包含了生产者和消费者如何建立连接,如果保障消息的传输的可靠性三:消息的保存方法,即Kafka是如何通过分区和副本机制来保证kafka的高可用四:消费者组以及重平衡问题即重平衡发生的过程,触发条件,以及可参考的解决方法原创 2021-07-31 19:52:56 · 859 阅读 · 0 评论 -
线程池使用与原理
Java线程池在设计的时候,是按照`生产者-消费者`的模式来设计的,整个过程遵循`Executor框架`,用`Runnable/Callable`来作为任务的抽象;用`Executor`接口作为任务执行的抽象,`Future`作为异步执行结果的抽象。在工程实践中,我们都推荐使用`ThreadPoolExecutor`的构造方法来创建线程k池,而不推荐`Executors`封装的方法去创建其他类型的线程池。`ThreadPoolExecutor`在创建线程时,一共有六个:* `corePoolSize原创 2021-07-29 20:29:57 · 226 阅读 · 0 评论 -
零拷贝技术的原理
`Copy-On-Write`本质上讲是一种**延迟复制**的思想,在执行读操作的时候,不进行复制,而只有真正执行写操作的时候才进行复制。它的应用也非常广泛,比如linux中的`fork()`方法,java中的`CopyOnWriteArrayList`。在使用时要注意其应用场景,因为其每次发生写操作都会复制新的空间,因此它天然适合**读多,写少的场景,并且能够忍受一定时间的读写不一致**。原创 2021-07-28 17:45:45 · 235 阅读 · 0 评论 -
synchronized的原理及应用
本篇文章主要讲了`synchronized`的三个应用方式:修饰实例方法、修饰静态方法、修饰代码块,并且针对每种方式都从JVM角度讲解了其实现的底层原理。在扩展部分则详细讲解了Java6对`synchronized`的优化措施,以及底层的原理。原创 2021-05-27 22:03:09 · 324 阅读 · 3 评论 -
Java内存模型及其原理
本文主要讲了Java内存模型的原理及其构成,Java内存模型按照不同角度的划分,可以看到不同的内容,从JVM设计者的角度看,我们可以看到"主内存和工作内存的划分"以及"内存间的交互操作"。从程序员角度看,我们能够看到三个常用的关键字:volatile、synchronized以及final,并且简单介绍了这个三个关键字的作用,后续也会分别写出对应详细的文章,从原理角度进行阐述volatile和synchronized的原理以及使用。同时,对于Happens-Before 规则我们也有详细的介绍,分成了六部分原创 2021-05-26 21:58:02 · 332 阅读 · 4 评论 -
Java并发知识梳理
本文主要从分工、同步和互斥三类问题展开,从解决对应问题角度出发大致梳理了Java并发知识的学习前景图。后续将分若干部分来讲对应的内容。原创 2021-05-24 18:54:59 · 211 阅读 · 3 评论 -
经典进程同步问题之生产者消费者问题
经典进程同步问题之生产者消费者问题什么是生产者消费者问题学术性描述:生产者-消费者(producer-consumer)问题是一个著名的进程同步问题。它描述的是:有一群生产者进程在生产产品,并将这些产品提供给消费者进程去消费。为使生产者进程与消费者进程能并发执行,在两者之间设置了一个具有n 个缓冲区的缓冲池,生产者进程将它所生产的产品放入一个缓冲区中;消费者进程可从一个缓冲区中取走产品去消费...原创 2019-05-12 19:20:35 · 1457 阅读 · 0 评论