一些整理
看了《java并发编程实战》确实有一些可以梳理,也可以通过jdk的源码得到答案。
java voliate关键字与指令重排序
- copyonwrite,写时复制,读时不加锁,所以读可能是旧值,只保证最终一致性,不能保证数据的实时一致性,适合读多写少的并发场景
- java内存泄露:
1
2
3
4
5
6
7
8
9
10
11//person 利用名字,年龄等属性重写了hashcode方法
HashSet<Person> hs=new HashSet<Person>();
Person p=new Person("张三",25);
p.setAge(10);
hs.remove(p);
//这里会无法删除,修改属性后hashcode变了,也就无法找到并删除这个对象了
//-----或者想下面这样--------
Map map = new HashMap();
//key未重写hashcode和equal方法
//直接这样增加的话,没有new Key()的这样引用,永远无法取出来和移除这个键值对
map.put(new Key("key"), "value");