Java问题解疑

2018-05-18  本文已影响14人  大头8086

一. Java基础

JVM

1、JVM初始化步骤 ? 2、类初始化时机 ?3、哪几种情况下,Java虚拟机将结束生命周期?

初始化,为类的静态变量赋予正确的初始值,JVM负责对类进行初始化,主要对类变量进行初始化。在Java中对类变量进行初始值设定有两种方式:
①声明类变量是指定初始值
②使用静态代码块为类变量指定初始值

Java 并发

如何合理的配置java线程池?如CPU密集型的任务,基本线程池应该配置多大?IO密集型的任务,基本线程池应该配置多大?用有界队列好还是无界队列好?任务非常多的时候,使用什么阻塞队列能获取最好的吞吐量?
答:1)配置线程池时CPU密集型任务可以少配置线程数,大概和机器的cpu核数相当,可以使得每个线程都在执行任务
2)IO密集型时,大部分线程都阻塞,故需要多配置线程数,2*cpu核数
3)有界队列和无界队列的配置需区分业务场景,一般情况下配置有界队列,在一些可能会有爆发性增长的情况下使用无界队列。
4)任务非常多时,使用非阻塞队列使用CAS操作替代锁可以获得好的吞吐量。

动态代理

在程序运行时,运用反射机制动态创建而成。动态代理的优势就是实现无侵入式的代码扩展。

应用场景
JDK动态代理与CGLIB区别
上一篇 下一篇

猜你喜欢

热点阅读