【今日推荐】十八岁出门远行
柏油马路起伏不止,马路像是贴在海浪上。我走在这条山区公路上,我像一条船。这年我十八岁,我下巴上那几根黄色的胡须迎风飘飘,那是第一批来这里定居的胡须,所以我格外珍重它们。我在这条路上走了整整一天,已经看了很多山和很多云。所有的山所有的云,都让...
柏油马路起伏不止,马路像是贴在海浪上。我走在这条山区公路上,我像一条船。这年我十八岁,我下巴上那几根黄色的胡须迎风飘飘,那是第一批来这里定居的胡须,所以我格外珍重它们。我在这条路上走了整整一天,已经看了很多山和很多云。所有的山所有的云,都让...
单生产者单消费者模式生产者消费者模型是一个经典的问题,其主要有3部分构成:生产者、阻塞队列和消费者。如下图所示:生产者消费者模式,可以在一定程度上面做到程序之间的模块解耦。但是还有一个主要的特性,就是...
我们在多线程编程的过程中,对于锁的使用有一些可以优化的地方。下面介绍一下,自己在写业务代码中需要注意的问题和JVM对锁的优化操作。业务代码中的注意事项减少锁的持有时间:意思就是在同步快内部的代码,对于...
今天我们介绍一下ConcurrentLinkedQueue的内部实现。从名字就可以看出来,其内部使用链表实现。下面介绍一下它的结构:基本结构单单从类图看来,结构不算复杂,有两个重要的属性就是head和...
CopyOnWriteArrayList是自JDK5开始提供的支持并发读写的List。从名字可以大致的看出来其内部的设计思想:在写入前copy一份数据以提供修改。下面看一下具体的实现:基本结构 ...
今天我们介绍一下ConcurrentHashMap在JDK1.8中的实现。基本结构ConcurrentHashMap在1.8中的实现,相比于1.7的版本基本上全部都变掉了。首先,取消了Segment分...
续《ConcurrentHashMap的JDK1.7实现(上)》rehash操作rehash也就是扩容操作,扩容之后的容量是之前的两倍,所以扩容之后的newCapacity也是2^n的一个值。 ...
本篇文章主要介绍一下JDK1.7中的ConcurrentHashMap的一些代码结构。ConcurrentHashMap顾名思义就是线程安全的HashMap,相对于HashMap来说,可以保证线程安全...
Fork/Join框架是Java7提供的用户并行任务执行的框架。原理是将一个大任务分割成多个小任务,最终再将小任务的结果汇聚,从而得到大任务的结果。工作窃取算法工作窃取算法(work-stealing...
在多线程的开发当中,如果我们大量的使用new Thread()的方式去创建线程的话,则会使系统内存被过度消耗(JDK1.5以后,创建一个线程的开销是1M),从而使系统崩溃。除此之外,线程创建和销毁的过...
LockSupport是一个实用的线程阻塞工具,提供了线程阻塞和唤醒的静态方法。LockSupport使用类似信号量的机制。当调用LockSupport.unpark()时,给当前线程提供了一个调用L...