前言:在上一篇博客说完了synchronized锁的到底是什么,以及基本的用法,作用,算是synchronized的预备知识。但是学东西要知其然也要知其所以然,所以这篇准备深入的分析,synchronized的原理,synchronized到底是怎么实现同步,保证线程安全的。 Java代码层面 Ja ...
分类:
其他好文 时间:
2020-05-17 17:48:49
阅读次数:
70
synchronized 锁定的是一个对象,执行某段代码的时候必须锁定一个对象,不锁定就无法执行 一、概念介绍 1.1 用户态与内核态 内核态(kener):内核/操作系统可以做的一些操作。 用户态(APP):用户的程序可以做的一些操作。 用户态的程序要访问一些比较危险的操作的时候,比如格式化硬盘或 ...
分类:
其他好文 时间:
2020-05-17 16:04:20
阅读次数:
86
本篇将从volatile和synchronized所引发的代码问题开始,进入底层原理挖掘,一方面促进自己学习的同时,另一方面也希望能帮助别的小伙伴,如有问题之处,欢迎指导纠正。 首先看以下一段代码: 1 /** 2 * 验证volatile原子性 3 */ 4 public class Atomic ...
分类:
其他好文 时间:
2020-05-15 21:48:20
阅读次数:
128
一.Semaphore是什么 Semaphore 是一个计数信号量,必须由获取它的线程释放。用于管理一组资源,内部是基于AQS的共享模式。它相当于给线程规定一个量从而控制允许活动的线程数。 Semaphore 是 synchronized 的加强版,作用是控制线程的并发数量。就这一点而言,单纯的sy ...
分类:
其他好文 时间:
2020-05-14 19:22:25
阅读次数:
47
[TOC] 一、传统的线程通信——synchronized同步的线程 假设系统中有两个线程,这两个线程分别代表存款者和取钱者——先假设有一种特殊的要求,系统要求存款者和取款者不断存钱、取钱的动作,而且要求存款者将钱存入指定账户后,取钱者就立即取出钱。不允许存款者两次存钱,也不允许取款者两次取钱。 为 ...
分类:
编程语言 时间:
2020-05-12 22:05:21
阅读次数:
108
说一下 synchronized 底层实现原理? 答: 今天的信息量太大,synchronized的概念也太重要,先放一天吧。 链接: https://www.baidu.com/link?url=D0YsM3VxKADKw3IGsMe7uE8TSQZzyBSK3d4CA9Bd6CrAynrM7qS ...
分类:
其他好文 时间:
2020-05-12 20:03:04
阅读次数:
130
二哥,离你上一篇我去已经过去两周时间了,这个系列还不打算更新吗?着急着看呢。 以上是读者 Jason 发来的一条信息,不看不知道,一看真的是吓一跳,上次我去是 4 月 3 号更新的,离现在一个多月了,可不只是两周时间啊。可能我自己天天写,没觉得时间已经过去这么久了,是时候带来新的一篇“我去”了。 这 ...
分类:
其他好文 时间:
2020-05-12 10:03:41
阅读次数:
70
1、Synchronized是jvm层面的锁是由jvm实现的而ReentrantLock是Api层面的锁它需要lock()和unlock()方法来获得锁和释放锁。 2、ReentrantLock获取锁可等待中断、可作为公平锁和非公平锁而Synchronized只能阻塞的等待获取锁、只能为非公平锁。 ...
分类:
其他好文 时间:
2020-05-11 23:21:43
阅读次数:
55
一个小伙伴最近参加某一线互联网公司的面试,被问到了一些并发相关的问题,看看大家能否答出来: (1)synchronized的CPU原语级别是如何实现的? (2)无锁、偏向锁、轻量级锁、重量级锁有什么差别,升级过程如何? (3)线程间通信,同机器进程间通信,跨机器进程间通信,各有什么方法? (4)下列 ...
分类:
其他好文 时间:
2020-05-11 20:32:35
阅读次数:
164
一.synchronized 的用法分类 Java中每一个对象都可以作为锁,这是synchronized实现同步的基础: 1、普通同步方法(实例方法),锁是当前实例对象 ,进入同步代码前要获得当前实例的锁 2、静态同步方法,锁是当前类的class对象 ,进入同步代码前要获得当前类对象的锁 3、同步方 ...
分类:
其他好文 时间:
2020-05-11 18:48:47
阅读次数:
58