锁的概念
什么是锁 锁的啥 锁的代码实现
定义
引入《Java核心技术 卷1 基础知识 原书第10版》定义
引入《Java并发编程实战》定义
我的理解:
锁就是当多个线程要使用
一个代码块
方法
类
的时候,需要按照一定的顺序去使用,特别是这个代码里面有一些可以共同的资源(共享变量)的时候,不让代码出现信息不一致的情况(并发干扰)
举例说明1:我们去厕所的时候,得把门上锁,一个人使用完充水后,再另外一个人使用,不然就有问题…
就是在做一件事情的时候,按照期望的顺序去做,这个时候需要加锁,锁的目的是并发时候有顺序执行
距离说明2:当去便利店买东西的时候,我们需要排队等待共用的一个收银机,当一个人在结账的时候,另外一个人需要等前面结完账,才能给下一个人服务,这个结账机就加了锁,属于共享资源
synchronized关键字
引入《Java核心技术 卷1 基础知识 原书第10版》定义
内部锁是什么意思?
我的理解 就是每个对象上都有锁,这个锁主要是代码块或者对象的方法,静态方法是锁类,因为静态方法是类级别的,类只会创建一次,动态方法是锁对象
这个锁的源头:JVM 提供机制把synchronized关键字变成相应的指令
synchronized底层实现
引用
https://www.cnblogs.com/flyinglion/p/15142362.html
引入问题
使用它前,我们先看一个例子
顾客类
package com.mark.duan.sync;
import java.sql.Timestamp;
import java.util.Date;
public class Custom {
//模拟顾客去便利店结账
public static void main(String[] args)