前面的文章ArrayBlockingQueue源码分析中,已经对JDK中的BlockingQueue中的做了一个回顾,同时对ArrayBlockingQueue中的核心方法作...
前言 本文的主要详细分析ArrayBlockingQueue的实现原理,由于该并发集合其底层是使用了java.util.ReentrantLock和java.util.Con...
http://ifeve.com/java-nio-all/
接下来这篇是查询优化,用户80%的操作基本都在查询,我们有什么理由不去优化他呢??所以这篇博客将会讲解大量的查询优化(索引以及库表结构优化等高级用法后面文章再讲),先讲单表查...
缓存的特征 高频访问,时效性小的业务 缓存一致性: 缓存穿透:在高并发场景下,如果某一个key被高并...
项目采用springboot基础框架快速开发,具体初始化方法不再赘述,不明白的可以看课程或者自行百度 1. 一些注解的准备 线程安全注解 importjava.lang.an...
并发: 同时拥有两个或者多个线程,如果程序在单核处理器上运行,多个线程交替得换入或者换出内存,这些线程是同时“存在”的,每个线程都处于执行过程中的某个状态,如果运行在多核处理...
死锁发生的必要条件 package com.mmall.concurrency.example.deadLock; import lombok.extern.slf4j.Sl...
1 new Thread 弊端 & 每次new Thread新建对象,性能差 & 线程缺乏统一管理,可能无限制的新建线程,相互竞争,有可能占用过多系统资源导致死机或OOM &...
传统线程两种实现方式的确定无法获取线程结果 && Callable与Runnable接口对比: Callable是一个泛型 && Future 接口 future :可以查询...
7.1 AbstractQueuedSynchronizer -AQS 底层实现了双向链表,是队列的一种实现方式 对象创建以后其状态就不能修改 底层是双向链表,队列的一种实现...
不可变对象 不可变对象需要满足的条件 对象创建以后其状态就不能修改 对象所有域都是final类型 对象是正确创建的(在对象创建期间,this引用没有逸出) 创建不可变对象的方...
定义 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些进程将如何交替执行,并且在主调代码中不需要额外的同步或协同,这个类都能表现出正确行为,那么就称这个类是线程...