红黑树:
根节点是黑色的
找到一个节点的路径一定是红黑交替的
每一个节点必须有颜色,要么黑色要么红色
当前节点与其子节点的颜色不一样
每一个节点都保存了颜色、值、父节点、左子树地址、右子树地址;
插入一个节点时按照二叉树的查找找元素所在位置,不过初次着色为红色,当新插入的节点导致红黑树不平衡后就需要再次调整平衡,包括修改颜色。
Treemap底层是用红黑树实现的
CAS :compare and swap 类似于乐观锁,只有预期的值改变了才会判断做不做
validate:保证该变量对所有的线程都可见
操作原子性
放在公用内存里保证大家都可以见
sychronized:关键字,可以修饰普通方法、代码块、静态方法
锁的可重入是指子类已经有锁了,父类也需要锁的时候不需要再加锁
Lock:显式锁,必须手动释放锁,是最大的区别
锁的底层实现是用栈和队列实现的
private final ReentrantLock lock = new ReentrantLock();
lock.lock();
sychronized 和 reentrantlock都是互斥锁
reentrantreadwritelock是读写锁,可共享的;
线程池:threadpoolexecutor
体现一种提交任务和任务执行分离的策略
forkjoinpool:线程池