Java
文章平均质量分 78
Jackie·Tang
这个作者很懒,什么都没留下…
展开
-
DCL双重检查
第一次写单例模式 public class Singleton { private static Singleton instance = null; public static Singleton getInstance() { if(instance == null) {//1 instance = new Singleton();//2 } return instance; } } 假设现在有两个线程,两个线程都调用getInstance()方法,假设线程A执行完1还没有执行原创 2021-04-14 10:05:19 · 104 阅读 · 0 评论 -
阻塞队列
阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。 阻塞队列有两个常见的阻塞场景: 当队列中没有数据的情况下,消费者端的所有线程都会被自动阻塞(挂起),直到有数据放入队列。 当队列中填满数据的情况下,生产者端的所有线程都会被自动阻塞(挂起),直到队列中有空的位置,线程被自动唤醒 BlockingQueue的核心方法 放入数据: offer(anObject):表示如果可能的话,将anObjec原创 2021-04-12 11:38:51 · 117 阅读 · 0 评论 -
ExecutorService的理解和使用
我们之前使用线程的时候都是使用new Thread来进行线程的创建,但是这样会有一些问题。如: a. 每次new Thread新建对象性能差 b. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom。 c. 缺乏更多功能,如定时执行、定期执行、线程中断。 相比new Thread,Java提供的四种线程池的好处在于: a. 重用存在的线程,减少对象创建、消亡的开销,性能佳。 b. 可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞。 c.原创 2021-04-09 14:40:33 · 864 阅读 · 0 评论 -
java线程基础
线程的状态 阅读一下jdk源码 /** * Thread state for a thread which has not yet started. */ NEW, /** * Thread state for a runnable thread. A thread in the runnable * state is executing in the Java virtual machine but it may * be waiting for other resources from the op原创 2021-04-07 14:41:37 · 69 阅读 · 0 评论