摘要:
阻塞队列 在线程池中我们可以看到他们使用的场景,以最常用的三种线程池来看,线程池可以查看之前写的文章。 ExecutorService executorService1 = Executors.newFixedThreadPool(10); ExecutorService executorServi 阅读全文
摘要:
如上类图,Executors 其实是个工具类,里面提供了好多静态方法,根据用户选择返回不同的线程池实例。 ThreadPoolExecutor 继承了 AbstractExecutorService,成员变量 ctl 是个 Integer 的原子变量用来记录线程池状态 和 线程池中线程个数,类似于 阅读全文
摘要:
一:创建线程的几种方式 1:继承Thread。 其实Thread这个类实现了Runnable这个接口,所以我们可以直接通过继承Thread然后重写run方法,直接new子类start就可以创建一个线程来执行。 2:实现Runnable。 我们知道Java中是单继承多实现的,所以通过继承实现有很大的局 阅读全文
摘要:
LinkedList 1:LinkedList中te实现的接口和ArrayList相比有一个特殊的接口:Deque是一个双端队列,所以LinkList可以作为队列(FIFO)也可以作为栈(LIFO)使用。 java中队列的实现就是LinkedList: 我们之所以说LinkedList 为双端链表, 阅读全文
摘要:
一:实现了的接口 1:RandomAccess 支持随机访问(基于下标),为了能够更好地判断集合是ArrayList还是LinkedList,从而能够更好选择更优的遍历方式,提高性能! 2:Cloneable 支持拷贝:实现Cloneable接口,重写clone方法、方法内容默认调用父类的clone 阅读全文
摘要:
关于什么是深拷贝和浅拷贝以及怎么实现我就不多说了网上有很多,我这里就是总结为深拷贝和浅拷贝有什么不同以及为什么浅拷贝的情况下为什么分为基本数据类型,引用数据类型,和String三种数据来看待。 深拷贝和浅拷贝的区别总结一句话就是:浅拷贝传递的只是栈中的内容,这个传递指的是实参向形参传递的内容。 我们 阅读全文
摘要:
1:为了和客户docker环境保持一直要使用基础镜像:openjdk:8-jdk-oraclelinux8 这个版本号是个tag,tag用docker list是查不到的,可以直接docker pull到本地,Dockerfile里直接From使用。 2:为了和客户的版本号保持一直还要升级最新的Do 阅读全文
摘要:
一:Metaspace介绍 我们都知道jdk8之前有perm这一整块内存来存klass等信息,我们的参数里也必不可少地会配置-XX:PermSize以及-XX:MaxPermSize来控制这块内存的大小,jvm在启动的时候会根据这些配置来分配一块连续的内存块,但是随着动态类加载的情况越来越多,这块内 阅读全文