主要谈谈锁的性能以及其它一些理论知识,内容主要的出处是《Java Concurrency in Practice》,结合自己的理解和实际应用对锁机制进行一个小小的总结。 首先需要强调的一点是:所有锁(包括内置锁和高级锁)都是有性能消耗的,也就是说在高并发的情况下,由于锁机制带来的上下文切换、资源同步 ...
分类:
编程语言 时间:
2018-05-26 20:24:49
阅读次数:
180
在Java5.0之前,只有synchronized(内置锁)和volatile. Java5.0后引入了显示锁ReentrantLock. ReentrantLock概况 ReentrantLock是可重入的锁,它不同于内置锁, 它在每次使用都需要显示的加锁和解锁, 而且提供了更高级的特性:公平锁, ...
分类:
其他好文 时间:
2018-05-25 22:47:29
阅读次数:
175
本文介绍线程安全性相关的概念,包括原子性,竞态条件,复合操作,内置锁等,通过这些术语的介绍逐步铺开线程安全的相关知识,了解在哪些情况下应当用内置锁,哪些情况下用线程安全类就足够了。同时,说明应过多的同步会引起程序的活跃度和性能问题。
分类:
编程语言 时间:
2018-05-25 10:55:58
阅读次数:
206
看的该文章的总结: https://juejin.im/post/5adf14dcf265da0b7b358d58 synchronized一般我们用来修饰三种东西: 修饰普通方法 修饰代码块 修饰静态方法 1.4.1修饰普通方法: 用的锁是Java3y对象(内置锁) public class Ja ...
分类:
其他好文 时间:
2018-05-18 01:18:59
阅读次数:
197
昨日内容回顾 队列是内置锁的,所以别的应用调用它,是安全的。 凡是涉及到手动加锁的,都是不安全的。常用的一般都是消息中间件 没有返回值的铅矿 close和join成对使用 执行输出: ...
分类:
编程语言 时间:
2018-05-15 20:57:22
阅读次数:
190
今天终于又重新拿起了Java Concurrency in Practice,之前被虐的体无完肤,在看这本书之前,有一部分自己写的代码我根本没意识到是线程不安全的,还真的是要恶补这方面的知识。 1.Java监视器模式 监视器模式其实很简单,就是用私有对象的锁或者内置锁来保证所属对象的线程安全性。这里 ...
分类:
编程语言 时间:
2018-05-09 22:49:45
阅读次数:
221
一 . 概述 在前面我们说到线程安全性问题解决的核心就是同步,同步的核心就是保证原子性. 在java之中最早就支持语法层面的同步解决了,并且提供了synchronized的方式解决问题. 二 .内置锁 在java之中每一个对象都是一个内置锁,这个在JVM的体系之中就规定好了. 内置锁的规定也就决定我 ...
分类:
其他好文 时间:
2018-05-05 21:12:12
阅读次数:
181
(一)线程同步(5种同步方式) 1.同步方法 >有synchronized关键字修饰的方法。(Java的每个内置对象都有一个内置锁,当用synchronized修饰方法 >内置锁保护整个方法) 在调用该方法前,需要获得内置锁,否则就处于阻塞状态。 eg: public synchronized vo ...
分类:
编程语言 时间:
2018-03-08 00:00:32
阅读次数:
473
一、等待/通知机制的简介 线程之间的协作: 为了完成某个任务,线程之间需要进行协作,采取的方式:中断、互斥,以及互斥上面的线程的挂起、唤醒;如:生成者 消费者模式、或者某个动作完成,可以唤醒下一个线程、管道流已准备等等; 等待/通知机制: 等待/通知 ...
分类:
其他好文 时间:
2018-03-02 01:25:21
阅读次数:
219
前言 经过前面的两篇文章的介绍,可以清楚知道,synchronized可以用于修饰一个方法 或者 代码块,线程要访问这些临界区代码,则要先获取对应的 对象监视器 ,从而使多个线程互斥访问临界区。 然而,区别是不是同一个对象监视器,是根据对象监视器的 ...
分类:
其他好文 时间:
2018-03-02 01:14:28
阅读次数:
261