上一页 1 2 3 4 5 6 7 8 9 10 ··· 167 下一页
摘要: 出队时候,如果队列处于稳定状态,那么就是一个挨着一个出队,难点在于出队的时候,队列正处于调整阶段,那么此时队列中的关系是混乱无章可寻的。 出队:unlock释放锁,不在队列线程去抢锁,队列第一个正常节点没有阻塞会自旋时候尝试获取锁,head=-1,唤醒第一个status正常节点(可能是head.ne 阅读全文
posted @ 2019-08-08 13:47 无天666 阅读(451) 评论(0) 推荐(0)
摘要: AQS的思想(稳定思想):即使确定了正常节点,这个节点也可能下一秒异常,即使找到了正常节点,这个节点可能只是异常status=0/-1的节点,这些都不要紧,都只是在自己旋转‘生命周期’里面和自己所看到的 最大可能的保证队列的稳定状态,如果判断错了,其他节点会帮着处理直到队列真正的稳定。 AQS的思想 阅读全文
posted @ 2019-08-08 13:30 无天666 阅读(415) 评论(0) 推荐(0)
摘要: 首先,一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止。 所以,Thread.stop, Thread.suspend, Thread.resume 都已经被废弃了。而 Thread.interrupt 的作用其实也不是中断线程,而是「通知线程应该中断了」,具体到底中断还是继续运 阅读全文
posted @ 2019-07-31 20:32 无天666 阅读(489) 评论(0) 推荐(0)
摘要: AtomicLong是作用是对长整形进行原子操作,显而易见,在java1.8中新加入了一个新的原子类LongAdder,该类也可以保证Long类型操作的原子性,相对于AtomicLong,LongAdder有着更高的性能和更好的表现,可以完全替代AtomicLong的来进行原子操作。 AtomicL 阅读全文
posted @ 2019-07-26 14:40 无天666 阅读(1368) 评论(0) 推荐(0)
摘要: 接下来看看volatile是如何解决上面两个问题的: 被volatile修饰的变量在编译成字节码文件时会多个lock指令,该指令在执行过程中会生成相应的内存屏障,以此来解决可见性跟重排序的问题。 内存屏障的作用: 1.在有内存屏障的地方,会禁止指令重排序,即屏障下面的代码不能跟屏障上面的代码交换执行 阅读全文
posted @ 2019-07-24 20:07 无天666 阅读(18356) 评论(3) 推荐(4)
摘要: LinkedHashMap底层存储结构与HashMap一样,不同的是LinkedHashMap增加了一个双向链表的头节点,插入的数据除了插入HashMap,还会插入链表中,因而可以保存插入节点的顺序 LinkedHashMap的节点在HashMap节点的基础上增加了前后节点的引用 LinkedHas 阅读全文
posted @ 2019-07-23 16:33 无天666 阅读(289) 评论(0) 推荐(0)
摘要: 1. 为什么无法创建更大的数组? Attempts to allocate larger arrays may result in OutOfMemoryError 如果数组长度过大,可能出现的两种错误 OutOfMemoryError: Java heap space 堆区内存不足(这个可以通过设 阅读全文
posted @ 2019-07-22 19:08 无天666 阅读(262) 评论(0) 推荐(0)
摘要: public class test { @SuppressWarnings({ "rawtypes", "unchecked" }) public static void main(String[] args) { HashMap1 hh = new HashMap1(3); //链表添加 hh.put(0, "0... 阅读全文
posted @ 2019-07-21 13:03 无天666 阅读(292) 评论(0) 推荐(0)
摘要: jdk1.8之前是数组+链表的形式,后面会介绍jdk1.8对hashMap的改动:数组+链表+红黑树 红黑树是O(logn),链表是O(n),大于等于7就转成红黑树,小于7时候O(longn)要大。 我们知道java.util.HashMap不是线程安全的,因此如果在使用迭代器的过程中有其他线程修改 阅读全文
posted @ 2019-07-21 12:49 无天666 阅读(268) 评论(0) 推荐(0)
摘要: package map; import org.junit.Test; import com.mysql.cj.api.x.Collection; import map.TreeMap1.AscendingSubMap.AscendingEntrySetView; import map.TreeMap1.NavigableSubMap.SubMapEntryIterator; impor... 阅读全文
posted @ 2019-07-17 22:51 无天666 阅读(312) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 9 10 ··· 167 下一页