摘要: 一、死锁的定义 多进程,多线程的并发执行虽然提升了系统资源的利用率,提高了系统的性能,但是并发执行也带来了新的问题 死锁。 死锁是指多个进程(线程)在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象(互相挂起等待),若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了 阅读全文
posted @ 2022-02-05 22:06 hanease 阅读(1279) 评论(0) 推荐(0) 编辑
摘要: 一、概述1、synchronized作用 原子性:synchronized保证语句块内操作是原子的可见性:synchronized保证可见性(通过“在执行unlock之前,必须先把此变量同步回主内存”实现)有序性:synchronized保证有序性(通过“一个变量在同一时刻只允许一条线程对其进行lo 阅读全文
posted @ 2022-02-05 22:03 hanease 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 一、线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 上图中基本上囊括了Java中多线程各重要知识点。掌握了上图中的各知识点,Java中的多线程也就基本上掌握了。主要包括: Java线程具有七种基本状态 新建状态(New):至今尚未启动的线程的状态。线程刚 阅读全文
posted @ 2022-02-05 21:50 hanease 阅读(686) 评论(0) 推荐(0) 编辑
摘要: 文章目录: 一、volatile的作用1.1、volatile变量的可见性1.2、volatile变量的禁止指令重排序二、volatile的的底层实现2.1、 Java代码层面2.2、字节码层面2.3、JVM源码层面2.4、汇编层面2.5、硬件层面 volatile关键字是Java虚拟机提供的最轻量 阅读全文
posted @ 2022-02-05 21:44 hanease 阅读(567) 评论(0) 推荐(0) 编辑
摘要: Java内存模型(JMM) 我们常说的JVM内存模式指的是JVM的内存分区;而Java内存模式是一种虚拟机规范。 Java虚拟机规范中定义了Java内存模型(Java Memory Model,JMM),用于屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效 阅读全文
posted @ 2022-02-05 21:36 hanease 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 一、线程池 1.1、什么是线程池 线程池是一种多线程的处理方式,利用已有线程对象继续服务新的任务(按照一定的执行策略),而不是频繁地创建销毁线程对象,由此提高服务的吞吐能力,减少CPU的闲置时间。具体组成部分包括:(1)、线程池管理器(ThreadPool)用于创建和管理线程池,包括创建线程池、销毁 阅读全文
posted @ 2022-02-05 21:27 hanease 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 思路一:SQL优化 为了具体模拟秒杀这一场景,假设库存表叫做stock,商品数量叫做num,有业务代码计算出的新数目为new_num=num-1,原来执行的SQL为: update stock set num=new_num where id = id=#{id}; 我们可以改进SQL,让数据库根据 阅读全文
posted @ 2022-02-05 16:29 hanease 阅读(210) 评论(0) 推荐(0) 编辑