数据结构与基本算法
天高任鸟飞-海阔凭鱼跃
天高任鸟飞 海阔凭鱼跃
展开
-
concurrenthashmap
jdk7 concurrenthashmap segment数组,默认大小,最大大小 segment中有成员变量hashentry数组,元素个数,阀值,modcount,默认大小 hashtable 增加的是对象实例锁 concurrenthashmap加的是分段锁,是以segment为单位。segment继承了ReentrantLock。 segment 最大的数量是2的16次方,segment数组的大小是不变的,即便后面扩容也不变。concurrenthashmap是局部扩容。每个segment的容量最原创 2020-10-18 10:47:48 · 256 阅读 · 0 评论 -
堆,阻塞队列,优先级队列
ArrayBlockingQueue : LinkedBlockingQueue (Integer.MAX_VALUE) SynchronusQueue(无锁,不存储元素) ConcurrentLinkedQueue (无锁) 非阻塞,不能用于线程池,线程安全, 无界,入队不用等待 cas(不用切换线程上下文,乐观锁) 长期占用CPU head tail :指向最后一个或者倒数第二个节点 平均入队两次tail移动一次,提高性能 1、PriorityBlockingQueue 数组,线程安全,排...原创 2020-09-10 22:36:45 · 177 阅读 · 0 评论 -
t != (t = tail) 可以为 true ?!
这个表达式出现在ConcurrentLinkedQueue的源码中,就是这么简短的一个表达式,搞的我是一头雾水,一脸懵逼。总是产生一种错觉,就是它应该永远为“false”。(在我心里括号最先执行,给t赋值tail,在比较左边t和右边t。) 下面就来分析下 t != (t = tail) 为啥子可以为true. 模拟一下场景: public class Test{ public static void main(String[] args) { Object t = new O转载 2020-09-10 22:35:38 · 506 阅读 · 0 评论 -
用Java位运算实现加减乘除四则运算
用Java位运算实现加减乘除四则运算 转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6412875.html 感谢博客:http://blog.csdn.net/itismelzp/article/details/49621741 提供的思路。 要用位运算来实现四则运算,不仅仅要知道&,|,~,^,<<,>>怎么做,还...转载 2018-08-17 09:05:48 · 2037 阅读 · 0 评论