协程原理深度剖析

V: ititit111222333

协程原理深度剖析

1.Cl lections.sort排序内部原理在Java 6中Arrays.sort(和Col ctions.sort(使用的是MergeSort, 而在Java 7中, 内部实现换成了Tim Sort, 其对对象间比较的实现要求更加严格2.hashMap原理, java 8做的改变从结构实现来讲, HashMap是数组+链表+红黑树(JDK 1.8增加了红黑树部分) 实现的。HashMap最多只允许条记录的键为null, 允许多条记录的值为null。HashMap非线程安全。Concurrent HashMap线程安全。解决碰撞:当出现冲突时,运用拉链法,将关键词为同义词的结点链接在一个单链表中,散列表长m,则定义一个由m个头指针组成的指针数组T,地址为i的结点插入以T(I) 为头指针的单链表中。Java 8 中,冲突的元素超过限制(8) , 用红黑树替换链表。3.String和StringBuilder的区别1)可变与不可变:String不可变, 每一次执行“+”都会新生成一个新对象,所以频繁改变字符串的情况中不用String, 以节省内存。2) 是否多线程安全:StringBuilder并没有对方法进行加同步锁, 所以是非线程安全的。StringBuffer和String均线程安全。4.Vector与Array的区别1) ArrayList在内存不够时默认是扩展50%+1个, Vector是默认扩展1倍。2) Vector属于线程安全级别的, 但是大多数情况下不使用Vector, 因为线程安全需要更大的系统开销。5.HashMap与Hashtable的区别1)历史原因:Hashtable继承Dictonary类, HashMap继承自abstract Map 2)HashMap允许空的键值对, 但最多只有一个空对象, 而HashTable不允许。3)HashTable同步, 而HashMap非同步, 效率上比HashTable要高6.Conn current HashMap和hashtable比较(两个线程并发访问map中同一条链, 一个线程在尾部删除,一个线程在前面遍历查找,问为什么前面的线程还能正确的查找到后面被另一个线程删除的节点)

猜你喜欢

转载自blog.51cto.com/15063244/2584081