ArrayBlockingQueue和LinkedBlockingQueue的区别有哪些
inkedBlockingQueue**ArrayBlockingQueue默认无界,支持有界强制有界底层是链表底层是数组是懒惰的,创建节点的时候添加数据提前初始化 Node 数组入队会生成新 NodeNode需要是提前创建好...
JAVA线程池实现原理
1、任务在提交的时候,首先判断核心线程数是否已满,如果没有满则直接添加到工作线程执行 2、如果核心线程数满了,则判断阻塞队列是否已满,如果没有满,当前任务存入阻塞队列 3、如果阻塞队列...
Spring Boot starter总结
1. starter介绍 Spring Boot 在配置上相比spring要简单许多, 其核心在于spring-boot-starter, 在使用spring boot来搭建一个项目时, 只需要引入官方提供的starter, 就可以直接使用, 免去了各种配...
JVM内存参数
堆内存,按大小设置 解释: -Xms 最小堆内存(包括新生代和老年代) -Xmx 最大对内存(包括新生代和老年代) 通常建议将 -Xms 与 -Xmx 设置为大小相等,即不需要保留内存,不需要从小到大增长,...
JVM内存结构
结合一段 java 代码的执行理解内存划分 执行 javac 命令编译源代码为字节码 执行 java 命令 创建 JVM,调用类加载子系统加载 class,将类的信息存入方法区 创建 main 线程,使用的内存区域是&nb...
wait和sleep的区别
共同点 wait() ,wait(long) 和 sleep(long) 的效果都是让当前线程暂时放弃 CPU 的使用权,进入阻塞状态 不同点 方法归属不同 sleep(long) 是 Thread 的静态方法 而 wait(),wait(long) 都是 Ob...
线程池的7大核心参数有哪些
七大参数 corePoolSize 核心线程数目 - 池中会保留的最多线程数 maximumPoolSize 最大线程数目 - 核心线程+救急线程的最大数目 keepAliveTime 生存时间 - 救急线程的生存时间,生存时间内没有新...