ConcurrentHashMap的JDK1.7实现(下)
续《ConcurrentHashMap的JDK1.7实现(上)》rehash操作rehash也就是扩容操作,扩容之后的容量是之前的两倍,所以扩容之后的newCapacity也是2^n的一个值。 ...
续《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...
倒计数器:CountDownLatchCountDownLatch从名字就可以看出其作用:初始化一个计数,然后每次递减,直至为0,然后触发一个动作。只有一个带参构造器:public CountDown...
当我们在做加锁处理共享资源时,对于读远大于写的场景,可以选择ReadWriteLock作为同步控制的工具。下面是读写锁的互斥关系:读写锁的互斥关系读写读非阻塞阻塞写阻塞阻塞从上面互斥关系可以看出,只有...
线程间通信:Condition对于线程间通信,大家最熟悉的莫过于Object.wait()、Object.notify()了。Condition的使用与前面的方法类似。 void await()...
线程的同步控制,最基础的就是synchronized关键字。但是在使用的过程中有一些限制,并没有那么的灵活。可重入所以下面介绍一下ReentrantLock的使用和相关特性,一个简单的demo如下:p...
线程分组线程分组可以理解为一些线程的分类。在多线程的程序当中,在调试或者打印日志的时候,众多的线程一般很难区分开来。但是通过线程的groupName和threadName可以清晰的看出是哪个线程。但是...