1.单例和多例的线程安全:单例不是线程安全,所有线程都操作同一个对象,比如servlet。多例是线程安全的,比如struts2的action,每个线程都有独立的action来维护值栈。 2.synchronized是关键字,jdk实现的,可以修饰方法以及代码块,不用自己释放锁,lock是类,代码实现的,只能修饰代码块,需要自己释放锁。往深层次挖可以从对象头说起,锁膨胀,monitor的contensionlist,enrtylist,waitset说。lock可以从aqs说起,讲源码。 3.crm线程安全hm不是,1.7通过分段锁形式减少锁的粒度来增加并发度 1.8通过cas+synchronized的形式来实现线程安全。 4.hashtable的父类是Dictionary,初始值11,2n+1扩容,所以index方法不会用位运算来优化,并且方法用synchronized修饰,太保守,多线程并发很差,crm的线程安全策略同上,并发程度比hashtable要好。 5.fullgc时机,minorgc还要分2种情况分析(是否开启内存担保),老年代空间不足,方法区空间不足,执行system.gc有可能执行fullgc。
点赞 5

相关推荐

牛客网
牛客企业服务