Bulingfeng Blog

「背后的努力决定人生的高度」

ReentrantReadWriteLock总结

ReentrantReadWriteLock总结

简介 ReentrantLock虽然已经能够实现锁的灵活控制,但是有个缺陷就是假如有读和写的两个方法,想通过保证读的值是准确的,写的值也是准确的。ReentrantLock虽然也能够实现,但是读和写总是互斥的,从而降低了程序的效率。 而ReentrantReadWriteLock有两把锁:读锁和写锁。这个锁的好处就是多个线程的读是可以并行的,但是多个线程的读和写是不行的,当然多个线程的写...

AQS底层原理和ReentrantLock实现

AQS底层原理和ReentrantLock实现

简介 虽然synchronized和ReentrantLock在性能上已经差别很小,但是ReentrantLock有很多特性是synchronized没有的特性。 共同点 都支持重入锁(实际上java的锁都支持重入锁,否则会造成很多死锁的情况) ReentrantLock特有特性 设置锁是否是公平锁 可中断锁;这意味着在获取锁的时候,可以进行中断 判断是否获取...

java中的锁

java中的锁

锁的简介 java中有两种锁synchronized和lock;原来synchronized被认为是低效的,但是经过一些优化之后和lock的性能已经相差无几了。 synchronized synchronized可以用于方法和方法内的局部代码块。 synchronized使用的是Monitor锁,而Monitor锁是跟着对象走的。 作用与方法 add和substrac...

JMM(可见性-原子性-重排序)

JMM(可见性-原子性-重排序)

可见性 造成可见性的最根本原因是CPU缓存,并且还是多核CPU下的缓存。换而言之如果是单CPU的缓存则不会存在可见性问题。 重排序 下面的代码有可能先执行ready = true; 然后再执行value=2,从而导致的结果就是t1线程输出的结果为1。 重排序也只会在多线程情况下才有可能发生问题的(请注意是多线程,不用关心CPU是否是多核)。 1 2 3 4 5 6 ...

动态代理

动态代理

简介 代理分为两种,一种是静态代理,一种是动态代理。 静态代理:在编译的时候生成代理类的字节码; 动态代理:在程序运行的过程中生成代理类的字节码; 使用静态代理的时候,需要有个代理类和原来要加强的逻辑都有同样的接口,然后代理类通过实现接口来对想要操作的方法进行加强。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public interface IU...

java异常

java异常

异常体系 直接继承Exception的异常是受检异常(checked Exception)或编译时异常(Compile Exception); 直接继承RuntimeException的异常是非受检异常(unchecked exception) 为何高并发下太多异常会导致程序变慢? 因为异常是一个调用链,这个链中就是每个方法挨个调用的方法栈;这就是解释了为什么发...

迭代器

迭代器

迭代器简介 迭代器其实通俗的来讲就是遍历(loop)容器的一些过程,场景的迭代方式有 for循环、for-each循环、迭代器、forEach()函数。 Iterable和Iterator区别 其实根据名称也能够探寻一二,就拿Iterator来说把,一看带是以or结尾的,那么就这个这个接口肯定就是执行迭代执行人嘛。转换成专业术语来说,可以这么来理解: Iterable这个接口负...

贫穷的本质

贫穷的本质

Hello everybody, I am your teacher - Li Yongle. Somebody PM’ed me recently That he borrowed thousands of yuan from an online loan in order to buy a high-end phone. Then it became over ten thousa...

java容器梳理

java容器梳理

容器总览 关于ArrayList和LinkList的准确描述 ArrayList并不是所有的插入都是很慢的,如果是数据的数量没有超过数组的最大值,并且还是插入到最后,那么这个时候插入也是O(1)的复杂度。只有ArrayList每次都在插入到首位才是O(n)的复杂度,英文对应的数据都要向后进行移动。 同样LinkList也不是所有的插入都是快的,对于双向链表来说,插入头部和尾部都是很...

Lost In Tailand

Lost In Tailand

今天突然发现通过电影来学习英语其实是一件效果非常好的事情,原因如下: 电影中有大量的生活常用语,这样语言更贴近地气,既然是生活用语,那么自己也可以在生活中使用或者模仿这个电影中的用语。 youtube上下载电影字幕的方式太简单了,这样自己只需要几秒钟就可以把整个电影的字幕都下载下来从而方面自己学习 看好电影,然后再朗诵或者背诵字幕的...