摘要:
锁池: 假设线程A已经拥有对象锁,线程B、C想要获取锁就会被阻塞,进入一个地方去等待锁的等待,这个地方就是该对象的锁池; 等待池: 假设线程A调用某个对象的wait方法,线程A就会释放该对象锁,同时线程A进入该对象的等待池中,进入等待池中的线程不会去竞争该对象的锁。 notify和notifyAll 阅读全文
摘要:
概念: 当调用Thread.yield方法时,会给线程调度器一个当前线程愿意让出CPU使用的暗示,但是线程调度器可能会忽略这个暗示。 代码演示: 分别有以下两种情况输出: 第一种情况: 第二种情况: 阅读全文
摘要:
方法一:调用interrupt方法,通知线程应该中断了: B.如果线程处于正常活动状态,那么会将该线程的中断标志设置为true。被设置中断标志的线程将正常运行,不受影响。 方法二:使用volatile boolean类型变量控制; 阅读全文
摘要:
消息传递方式: select:内核需要将消息传递到用户空间,需要内核的拷贝动作; poll:同上; epoll:通过内核和用户空间共享一块内存来实现,性能较高; 文件句柄剧增后带来的IO效率问题: select:因为每次调用都会对连接进行线性遍历,所以随着FD剧增后会造成遍历速度的“线性下降”的性能 阅读全文
摘要:
有三种实现方式: 阅读全文
摘要:
Thread实现了Runnable接口,使得run方法支持多线程; 因类的单一继承原则,推荐多实用Runnable接口 阅读全文
摘要:
通过流言协议来接收关于主服务器是否下线的信息,并使用投票协议来决定是否执行自动故障迁移,以及选择哪个从服务器作为新的主服务器。 阅读全文
摘要:
在jdk6和jdk7的时候,jdk比cglib要慢; 在jdk8的时候,jdk性能得到提升比cglib要快很多; 结论出自:https://www.cnblogs.com/xuliugen/p/10442952.html 阅读全文
摘要:
当数组长度为2的N次方时,不同的key算出的index相同的几率小,数据在数组上分配均匀,hash碰撞的几率小,提升查询效率,从大O(N)提升至O(1); 阅读全文
摘要:
标记-清除算法(Mark and Sweep) 标记:从根集合进行扫描,对存活的对象进行标记; 清除:对堆内存从头到尾进行线性遍历,回收不可达对象内存; 它是最基础的算法,存在两个不足:1、效率问题,标记和清除效率都不高;2、空间问题,标记-清除后,会产生不连续的内存碎片; 复制算法: 分为对象面和 阅读全文