什么是JMM内存模型 内存模型可以理解为在特定的操作协议下,对特定的内存或高速缓存进行读写访问的过程抽象描述,不同架构下的物理机拥有不一样的内存模型。 JMM(Java内存模...
什么是JMM内存模型 内存模型可以理解为在特定的操作协议下,对特定的内存或高速缓存进行读写访问的过程抽象描述,不同架构下的物理机拥有不一样的内存模型。 JMM(Java内存模...
一、前言指令重排在单线程环境下有利于提高程序的执行效率,不会对程序产生负面影响;在多线程环境下,指令重排会给程序带来意想不到的错误。 本文对多线程指令重排问题进行复原,并针对...
零、 本文纲要 一、 单例模式 饿汉式① 静态变量方式② 静态代码块③ 枚举 懒汉式① 静态方法(线程不安全)② 静态synchronized方法(线程安全)③ 静态方法双检...
介绍 使用 volatile 修饰的变量是线程共享的全局变量,是轻量级锁的一种表现形式,因为不需要线程上线文切换和调度这些操作,效率杠杠的,但是不能保证原子性,并发场景下要小...
1、synchronized修饰普通方法和静态方法的区别?什么是可见性? 对象锁是用于对象实例方法,或者一个对象实例上的, 类锁 是用于类的静态方法或者一个类的class对象...
CountDownLatch中count down是倒数的意思,latch则是门闩的含义。整体含义可以理解为倒数的门栓,似乎有一点“三二一,芝麻开门”的感觉。CountDow...
原文链接:剖析基于并发AQS的共享锁的实现(基于信号量Semaphore) - CSDN博客 信号量-Semaphore Semaphore共享锁的使用 信号量(Semaph...
static Semaphore sSemaphore = new Semaphore(6) 表示该方法最多允许几个线程访问sSemaphore.acquire():调用一次...
前言 Linux系统的基本操作,对于大多数计算机类相关学生或者相关从业人员都很重要,本文以树莓派的Linux系统为实例,从基础出发,详细介绍Linux系统中最基础的操作。 什...
在java的并发包中为我们提供了三种并发控制的手段,他们分别是CountDownLatch|CyclicBarrier|Semaphore,今天我们分别来讲解一下这三种方法以...
IP 基础知识“全家桶”,45 张图一套带走 前言 前段时间,有读者希望我写一篇关于 IP 分类地址、子网划分等的文章,他反馈常常混淆,摸不着头脑。 那么,说来就来!而且要盘...
反射之中包含了一个「反」字,所以想要解释反射就必须先从「正」开始解释。 一般情况下,我们使用某个类时必定知道它是什么类,是用来做什么的。于是我们直接对这个类进行实例化,之后使...
基础知识 线程切换代价 Java的线程是映射到操作系统的原生线程之上的,如果阻塞或唤醒一个线程就需要操作系统介入,需要在用户态和内核态之间切换,该切换会消耗大量的系统资源,因...
前端当然要学HTTP啊,不学HTTP怎么办嘛 ——一位前端工程师如是说...
引言 这篇文章玩转Linux必会的几个命令,包括:切换图形界面和命令行模式,显示文件夹类容,目录跳转,创建、删除、移动文件和文件夹,重启和关机等。 文章目录 0×1.Linu...
平时我们都使用 idea、eclipse 等软件来编写代码,在编写完之后直接点击运行就可以启动程序了,那么这个过程是怎么样的? 总体过程 我们编写的 java 文件在由编译器...
虽然说了解虚拟机的运作并不是一般开发人员必须掌握的知识,但是对于中高级开发人员来说,如果不了解JVM一些技术特性的运行原理,就无法写出更高效、更稳定的代码。并且在出现了内存相...
Http请求报文结构 常用字段描述 请求行 请求行由方法字段、URL 字段 和HTTP 协议版本字段 3 个部分组成,他们之间使用空格隔开。常用的 HTTP 请求方法有 GE...