GC机制
HashMap
HashMap面试
HashMap HashTable区别
CurrentHashMap线程安全
线程池
hashcode
hashcode equal()
4、为什么equals()相等,hashCode就一定要相等,而hashCode相等,却不要求equals相等?
因为是按照hashCode来访问小内存块,所以hashCode必须相等。
HashMap获取一个对象是比较key的hashCode相等和equals为true。
之所以hashCode相等,却可以equal不等,就比如ObjectA和ObjectB他们都有属性name,那么hashCode都以name计算,所以hashCode一样,但是两个对象属于不同类型,所以equals为false。
5、为什么需要hashCode?
通过hashCode可以很快的查到小内存块。
通过hashCode比较比equals方法快,当get时先比较hashCode,如果hashCode不同,直接返回false。
java反射机制
ArrayList 与 LinkedList 面试
volatile
v
被volatile修饰的共享变量,就具有了以下两点特性:
保证了不同线程对该变量操作的内存可见性;
禁止指令重排序;
可见性:可见性是指当一个线程修改了共享变量的值,其他线程能够立即得知这个修改。
无论普通变量还是volatile变量都是如此,只不过volatile变量保证新值能够立马同步到主内存,使用时也立即从主内存刷新,保证了多线程操作时变量的可见性。而普通变量不能够保证。