随笔分类 - [java]-java并发
摘要:什么是线程池 在 Java 中,如果每个请求到达就创建一个新线程,创建和销毁线程花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。 如果在一个 Jvm 里创建太多的线程,可能会使系统由于过度消耗内存或“切换过度”而导致系统资源不足为了解决这个问题,就有了线程池
阅读全文
摘要:我相信大家都有使用过分布式消息队列,比如 ActiveMQ、kafka、RabbitMQ 等等,消息队列的是有可以使得程序之间实现解耦,提升程序响应的效率。如果我们把多线程环境比作是分布式的话,那么线程与线程之间是不是也可以使用这种消息队列的方式进行数据通信和解耦呢? 阻塞队列的使用案例 假如我们模
阅读全文
摘要:线程这块的一些工具类,基本都会以原理为主,通过分析别人代码的设计和实现,给自己提供积累一些方法和工具。 Condition 在前面学习 synchronized 的时候,有讲到 wait/notify 的基本使用,结合 synchronized 可以实现对线程的通信。那么这个时候我就在思考了,既然
阅读全文
摘要:J.U.C 简介 Java.util.concurrent 是在并发编程中比较常用的工具类,里面包含很多用来在并发场景中使用的组件。比如线程池、阻塞队列、计时器、同步器、并发集合等等。并发包的作者是大名鼎鼎的 Doug Lea。我们在接下来剖析一些经典的比较常用的组件的设计思想。 Lock Lock
阅读全文
摘要:初步认识 Volatile 下面这段代码,演示了一个使用 volatile 以及没使用 volatile 这个关键字,对于变量更新的影响 public class VolatileDemo { public /*volatile*/ static boolean stop=false; public
阅读全文
摘要:多线程基本原理-1 由一个问题引发的思考 线程的合理使用能够提升程序的处理性能,主要有两个方面: 第一个是能够利用多核 cpu 以及超线程技术来实现线程的并行执行; 第二个是线程的异步化执行相比于同步执行来说,异步执行能够很好的优化程序的处理性能提升并发吞吐量 同时,也带来了很多麻烦,举个简单的例子
阅读全文
摘要:并发基础-初步认识 线程的应用 在 Java 中,有多种方式来实现多线程。继承 Thread 类、实现 Runnable 接口、使用 ExecutorService、Callable、Future 实现带返回结果的多线程。 Thread 类本质上是实现了 Runnable 接口的一个实例,代表一个线
阅读全文
摘要:ConcurrentHashMap 的初步使用及场景 CHM 的使用 ConcurrentHashMap 是 J.U.C 包里面提供的一个线程安全并且高效的 HashMap,所以 ConcurrentHashMap 在并发编程的场景中使用的频率比较高,从 ConcurrentHashMap 的使用上
阅读全文