同步控制是并发程序必不可少的重要手段,synchronized关键字就是一种简单的控制方式,除此之外,JDK内部并发包中也也提供了Lock接口,该接口中提供了lock()方法和unLock()方法对显式加锁和显式释放锁操作进行支持。 ReentrantLock(重入锁) 重入锁可以完全替代synch ...
分类:
编程语言 时间:
2017-12-10 22:55:39
阅读次数:
225
关键字在使用synchronized时,当线程得到一个对象锁时,这时这个线程再次请求此对象锁是可以拿到的,也就说明同步方法之间是可以进行互相调用的, 可重入锁的概念: 自己可以再次获取自己的内部锁,譬如有一条线程获得了某个对象的对象锁,此时这个对象锁还没释放,当其要再次获得这个对象锁的时候还能获取, ...
分类:
其他好文 时间:
2017-12-05 20:09:36
阅读次数:
185
“可重入锁”的概念是:自己可以再次获得自己的内部锁。比如有一条线程获得了某个对象的锁,此时这个对象还没有释放,当其再次想获得这个对象的锁的时候还是可以获得的,如果不可锁重入的话,就会造成死锁。 在加粗的sychronized在的时候结果会有下面,结果不唯一的: 1str1 2str1 1str2 2 ...
分类:
编程语言 时间:
2017-12-02 00:39:27
阅读次数:
199
多线程开发可以更好的发挥多核cpu性能,常用的多线程设计模式有:Future、Master-Worker、Guard Susperionsion、不变、生产者-消费者 模式; jdk除了定义了若干并发的数据结构,也内置了多线程框架和各种线程池; 锁(分为内部锁、重入锁、读写锁)、ThreadLoca ...
分类:
其他好文 时间:
2017-11-02 00:59:23
阅读次数:
175
多线程设计模式(一):总体介绍 多线程开发可以更好的发挥多核cpu性能,常用的多线程设计模式有:Future、Master-Worker、Guard Susperionsion、不变、生产者-消费者 模式;jdk除了定义了若干并发的数据结构,也内置了多线程框架和各种线程池; 锁(分为内部锁、重入锁、 ...
分类:
编程语言 时间:
2017-09-07 17:10:58
阅读次数:
217
本章主要讲并发线程的常见的两种锁。重入锁和读写锁 一:重入锁(ReentrantLock) 概念:重入锁,在需要进行同步的代码加锁,但最后一定不要忘记释放锁,否则会造成锁永远不能释放,其他线程进不了 代码解析: 实例化:Lock lock = new ReentrantLock(); 锁定:lock ...
分类:
编程语言 时间:
2017-05-17 13:48:48
阅读次数:
212
什么是线程安全? 当多个线程访问某个类时,不管这些的线程的执行顺序如何,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。 哈哈书上的解释,还是翻译过来的,看了半天还是觉得有点奇怪。比如说 “类都能表现出正确的行为” 是毛线意思?在网上搜了一番 "线 ...
分类:
编程语言 时间:
2017-04-27 15:34:16
阅读次数:
163
重入锁ReentrantLock 锁获取的公平性问题: 先对锁进行获取的请求一定先被满足,那么这个锁是公平的,反之,是不公平的。ReentrantLock提供了一个构造函数(传人一个布尔值),来控制锁是否是公平的 1.实现重进入 2.公平与非公平获取锁 公平与非公平获取锁的区别 :锁的获取顺序是否符 ...
分类:
其他好文 时间:
2017-02-18 11:04:41
阅读次数:
268
一、synchronized有锁重入的特点,某个线程得到对象的锁后,再次请求此对象可以再次得到改对象的锁。如下示例,在method1中调用method2,在method2中调用method3,而method1、method2和method3都是加了synchronized关键字的。 二、父类和子类的 ...
分类:
其他好文 时间:
2016-12-02 03:21:01
阅读次数:
184