Java互联网架构师
Java互联网架构师开发
Liguangyang01
我是小杨
展开
-
原子类之LongAdder
代码】原子类之LongAdder。原创 2022-07-17 20:31:47 · 158 阅读 · 1 评论 -
JUC_CAS
执行cmpxchg指令的时候,会判断当前系统是否为多核系统,如果是就给总线加锁,只有一个线程会对总线加锁成功,加锁成功之后会执行cas操作,也就是说CAS的原子性实际上是CPU实现独占的,比起用synchronized重量级锁,这里的排他时间要短很多,所以在多线程情况下性能会比较好。执行CAS操作的时候,将内存位置的值与预期原值比较如果相匹配,那么处理器会自动将该位置值更新为新值,它是非阻塞的且自身具有原子性,也就是说这玩意效率更高且通过硬件保证,说明这玩意更可靠。硬件**保证了比较-更新的原子性。....原创 2022-07-17 10:33:43 · 133 阅读 · 0 评论 -
volatile的使用
不加volatile,没有可见性,程序无法停止加了volatile,保证可见性,程序可以停止。1.线程中读取的时候,每次读取都会去主内存中读取共享变量最新的值,然后将其复制到工作内存。如果使用starticbooleanflag=true。那么该程序将不会停止。2.线程中修改了工作内存中变量的副本,修改之后会立即刷新到主内存。不能保证数据的准确性,要保证原子性要加lock,unlock。...原创 2022-07-14 22:35:03 · 303 阅读 · 1 评论 -
volatile-内存屏障
内存屏障(也称内存栅栏,屏障指令等,是一类同步屏障指令,是CPU或编译器在对内存随机访问的操作中的一个同步点,使得此点之前的所有读写操作都执行后才可以开始执行此点之后的操作),避免代码重排序。内存屏障其实就是一种JVM指令,Java内存模型的重排规则会要求Java编译器在生成JVM指令时插入特定的内存屏障指令,通过这些内存屏障指令,volatle实现了Java内存模型中的可见性和有序性(禁重排),但volatile无法保证原子性。处理器在读屏障之后的读操作,都在读屏障之后执行。...原创 2022-07-14 20:54:26 · 1016 阅读 · 0 评论 -
JMM-java内存模型
CPU的运行并不是直接操作内存而是先把内存里边的数据读到缓存,而内存的读和写操作的时候就会造成不一致的问题****JVM规范中试图定义一种Java内存模型(java Memory Model,简称JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。JMM本身是一种抽象的概念并不真实存在,它仅仅描述的是一组约定或规范,通过这组规范定义了程序中各个变量的读写访问并决定一个线程对共享变量的写入何时以及如何变成对另一个线程课件,关键技术点都是围绕多线程的原创 2022-07-13 22:40:00 · 159 阅读 · 0 评论 -
LockSupport过人之处
线程的唤醒方法:一:使用 Object中的wait()方法让线程等待,使用 Object中的notify()方法唤醒线程wait和notify必须要在synchronized方法内且成对出现 : 使用时必须先wait再notify二:使用 JUC包中的Condition的await()方法让线程等待,使用signal()方法唤醒线程wait和notify必须要在lock内且成对出现 : 使用时必须先await再signal三:LockSupport类可以阻塞当前线程以及唤醒原创 2022-07-13 21:46:01 · 88 阅读 · 0 评论 -
为什么要在异常处,再调用一次interrupt
代码原创 2022-07-13 20:23:54 · 119 阅读 · 0 评论 -
公平锁非公平锁&可重入锁
公平与非公平锁非公平锁更能充分的利用cpu的时间片,尽量减少cpu的空闲状态时间使用多线程最重要的是线程切换的开销,当采用非公平锁时,当一个线程请求锁获取同步状态,然后释放同步状态,所以刚释放锁的线程在此刻获取同步状态的概率就变得非常大,所以就减少了线程的开销。可重入锁可重入锁是某个线程已经获得某个锁,可以再次获取锁而不会出现死锁。再次获取锁的时候会判断当前线程是否是已经加锁的线程,如果是对锁的次数+1,释放锁的时候加了几次锁,就需要释放几次锁。代码中的锁的递归只是锁的一种表现及证明形式,除了这原创 2022-07-12 19:09:46 · 414 阅读 · 0 评论 -
Monitors是什么
可以把它理解为 一个同步工具,也可以描述为 一种同步机制,它通常被 描述为一个对象。与一切皆对象一样,所有的Java对象是天生的Monitor,每一个Java对象都有成为Monitor的潜质,因为在Java的设计中 ,每一个Java对象自打娘胎里出来就带了一把看不见的锁,它叫做内部锁或者Monitor锁。也就是通常说Synchronized的对象锁,MarkWord锁标识位为10,其中指针指向的是Monitor对象的起始地址。在Java虚拟机(HotSpot)中,Monitor是由ObjectMonitor原创 2022-07-12 09:31:04 · 301 阅读 · 0 评论 -
多线程锁之乐观锁和悲观锁
悲观锁认为自己在使用数据的时候一定会有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。synchronized和ReentrantLock实现类都是悲观锁。适合写操作多的场景,现价所可以保证写操作时的数据正确。 狼性锁乐观锁认为自己在使用数据是不会有别的线程来修改数据或者资源,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制Ve原创 2022-07-11 22:32:34 · 737 阅读 · 0 评论 -
CompletableFuture的应用案例
package com.bilibili.juc;import lombok.Getter;import java.util.Arrays;import java.util.List;import java.util.concurrent.CompletableFuture;import java.util.concurrent.ThreadLocalRandom;import java.util.concurrent.TimeUnit;import java.util.stream.Collec原创 2022-07-11 21:12:33 · 229 阅读 · 0 评论 -
java函数式编程
Java函数式编程概念:面向对象思想关注用什么对象完成什么事情。而函数式编程思想就类似数学中的函数。它关注的是对数据进行了说明操作。(类似把具体的操作代码通过参数的形式传递进去)好处:为了看懂公司大佬写的代码。大数据量下处理集合效率高代码可读性高减少嵌套Lambda表达式04.Lambda表达式入门 P5 - 00:11Lambda是JDK8中的语法糖,它可以对某些匿名内部类的写法进行简化。它是函数式编程思想的一个重要体现。让我们不用关注是什么对象,而是更关注我们对数据进行了什么操作。写Lambda记原创 2022-07-10 20:32:11 · 7612 阅读 · 1 评论 -
java枚举简单用法
定义调用原创 2022-07-06 21:43:14 · 197 阅读 · 0 评论 -
nacos安装部署
nacos本地启动原创 2022-06-13 22:03:59 · 101 阅读 · 0 评论 -
SpringBoot
回顾什么是SpringSpring是一个开源框架,2003 年兴起的一个轻量级的Java 开发框架,作者:Rod Johnson 。Spring是为了解决企业级应用开发的复杂性而创建的,简化开发。Spring是如何简化Java开发的为了降低Java开发的复杂性,Spring采用了以下4种关键策略:1、基于POJO的轻量级和最小侵入性编程,所有东西都是bean;2、通过IOC,依赖注入(DI)和面向接口实现松耦合;3、基于切面(AOP)和惯例进行声明式编程;4、通过切面和模版减少样式代码,R原创 2020-10-25 21:42:05 · 1221 阅读 · 1 评论 -
Mybatis
简介:MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。中文文档: https://mybatis.org/mybatis-3/zh/index.html下载地址: https://github.com/m原创 2020-10-25 21:38:47 · 114 阅读 · 0 评论 -
Spring
简介Spring概述简介Spring : 春天 —>给软件行业带来了春天2002年,Rod Jahnson首次推出了Spring框架雏形interface21框架。2004年3月24日,Spring框架以interface21框架为基础,经过重新设计,发布了1.0正式版。很难想象Rod Johnson的学历 , 他是悉尼大学的博士,然而他的专业不是计算机,而是音乐学。Spring理念 : 使现有技术更加实用 . 本身就是一个大杂烩 , 整合现有的框架技术官网 : http://s原创 2020-10-25 21:35:46 · 199 阅读 · 0 评论