1. 前提
- 链表,是基本数据结构;
- resize方法,操作了线程的共同资源;
2. 根本
hashmap死锁主要是一个线程执行transfer过程中,被另一个线程改变了链表元素(共同资源)的指针指向;
3. “方法论”
多线程不安全的根本原因在于对共同资源的操作。
若内存可见,那么会导致对共同资源的执行操作乱序,关系错乱;
若内存不可见,那么当最后一个线程将newTable赋值给table时,会覆盖(修改);
hashmap死锁主要是一个线程执行transfer过程中,被另一个线程改变了链表元素(共同资源)的指针指向;
多线程不安全的根本原因在于对共同资源的操作。
若内存可见,那么会导致对共同资源的执行操作乱序,关系错乱;
若内存不可见,那么当最后一个线程将newTable赋值给table时,会覆盖(修改);