摘要:
Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。线程池就像数据库连接池的作用类似,只是线程池是用来重复管理线程避免创建大量线程增加开销。 合理的使用线程池: 降低创建线程和销毁线程的性能开销 合理的设置线程池大小可以避免因为线程数超出硬件资源瓶颈带来 阅读全文
摘要:
JMM保证原子性、可见性、有序性 原子性 两个高级的字节码指令monitorenter和monitorexit,在java中对应的Synchronized来保证代码块内的操作是原子的 可见性 volatile 写操作的时候会多出一个lock前缀的汇编指令 MESI的缓存一致性协议,来保证多CPU下的 阅读全文
摘要:
并发编程基础: 线程状态(NEW、RUNNABLE、BLOCKED、WAITING、TIME_WAITING、TERMINATED) NEW:初始状态,线程被构建,但是还没有调用 start 方法 RUNNABLED:运行状态,JAVA 线程把操作系统中的就绪和运行两种状态统一称为“运行中” BLO 阅读全文
摘要:
什么是Dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取`Dockerfile`中的指令自动生成映像。 `docker build`命令用于从Dockerfile构建映像。可以在`docker build`命令中 阅读全文
摘要:
jps java process status jps l 主 类 全 名 jps m 运 行 传 入 主 类 的 jps v 虚 拟 机 参 数 jstat 类 加 载 , 内 存 , 垃 圾 收 集 , jit 编 译 信 息 、 https://docs.oracle.com/javase/8 阅读全文
摘要:
字节码与数据类型 在虚拟机的指令集中,大多数的指令包含了其操作所对应的 数据类型信息 iLoad:从局部变量表中加载int型数据到操作数栈 大多数指令包含类型信息 类型多,指令少 加载与存储指令 加载和存储指令用于将数据在栈帧中的局部变量表和操作数栈直接来回传输 将局部变量表加载到操作数栈: ilo 阅读全文