一.适应ConcurrentHashMap的原因 HashMap存在线程不安全的问题,HashTable效率十分低下,因此,ConcurrentHashMap有了合适的登场机会。 (1)HashTable的线程不安全性 在并发编程环境中,使用HashMap进行put操作会引起死循环,导致CPU利用率 ...
分类:
其他好文 时间:
2017-09-16 20:47:29
阅读次数:
249
前沿: ReentrantLock 是java重入锁一种实现,在java中我们通常使用ReentrantLock 和 synchronized来实现锁功能,本篇通过例子来理解下ReentrantLock使用以及什么是可重入锁。 理解可重入: 1. 锁机制是为了多线程并发访问共享资源情况下为保证线程的 ...
分类:
其他好文 时间:
2017-09-11 19:48:38
阅读次数:
161
线程可以有六种状态: 1.New(新创建) 2.Runnable(可运行)(运行) 3.Blocked(被阻塞) 4.Waiting(等待) 5.Timed waiting(计时等待) 6.Terminated(被终止) 新创建线程: 当用new操作符创建一个新线程时,如new Thread(r), ...
分类:
编程语言 时间:
2017-09-10 10:10:30
阅读次数:
124
一、概述: Java纪年1.5年,ReentrantReadWriteLock诞生于JUC,此后,国人一般称它为读写锁。人如其名,他就是一个可重入锁,同时他还是一个读写锁 a)跟ReentrantLock并没有任何的亲属关系 因为ReentrantReadWriteLock在命名上跟Reentran ...
分类:
其他好文 时间:
2017-09-07 16:14:05
阅读次数:
191
1 公平锁/非公平锁 公平锁是指多个线程按照申请锁的顺序来获取锁。 非公平锁是指多个线程按照申请锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。有可能,会造成优先级反转或者饥饿现象。 对于Java ReentrantLock而言,通过构造函数指定该锁是否是公平锁,默认是非 ...
分类:
编程语言 时间:
2017-09-04 00:48:05
阅读次数:
272
thread-safe: 如果一个函数在多线程的条件下仍然保持计算结果和单线程一样,就说明它是线程安全的。 线程安全的函数: 不包含静态数据区的变量,只有堆栈变量; 有静态数据区的变量,然而会加锁; 可重入: 对于单个线程,如果执行到中途,打断了又执行一次,计算结果仍然保持正确,说明这个函数是可重入 ...
分类:
编程语言 时间:
2017-08-21 14:47:56
阅读次数:
112
【Java并发编程实战】 “J.U.C”:ReentrantLock之一简介 ReentrantLock介绍 ReentrantLock是一个可重入的互斥锁,又被称为“独占锁”。 顾名思义,ReentrantLock锁在同一个时间点只能被一个线程锁持有;而可重入的意思是,ReentrantLock锁 ...
分类:
编程语言 时间:
2017-08-18 13:28:36
阅读次数:
238
1. Qt多线程与Qobject的关系 每一个 Qt 应用程序至少有一个事件循环,就是调用了QCoreApplication::exec()的那个事件循环。不过,QThread也可以开启事件循环。只不过这是一个受限于线程内部的事件循环。因此我们将处于调用main()函数的那个线程,并且由QCoreA ...
分类:
编程语言 时间:
2017-08-11 23:56:19
阅读次数:
408
1、ConcurrentHashMap锁分段技术 在ConcurrentHashMap使用锁分段技术,首先将数据分成一段一段地存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问。 2、ConcurrentHashMap的结构 Concurrent ...
分类:
其他好文 时间:
2017-08-03 16:51:06
阅读次数:
128
ReentrantLock是Java并发包中提供的一个可重入的互斥锁。ReentrantLock和synchronized在基本用法,行为语义上都是类似的,同样都具有可重入性。只不过相比原生的Synchronized,ReentrantLock增加了一些高级的扩展功能,比如它可以实现公平锁,同时也可 ...
分类:
其他好文 时间:
2017-07-30 00:56:20
阅读次数:
233