小同学的博客

你走过的路每一步都算数


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

从jvm源码看ReentrantLock实现原理

发表于 2024-07-12 | 分类于 Java

JAVA里的锁有两大类,一类是synchronized锁,一类是concurrent包里的锁(JUC锁)。其中synchronized锁是JAVA语言层面提供的能力,本文主要讨论JUC里的ReentrantLock锁。

阅读全文 »

ReentrantLock入门和实践

发表于 2024-07-11 | 分类于 Java

JAVA里的锁有两大类,一类是synchronized锁,一类是concurrent包里的锁(JUC锁)。其中synchronized锁是JAVA语言层面提供的能力,本文主要讨论JUC里的ReentrantLock锁。

阅读全文 »

synchronized优化原理

发表于 2024-07-08 | 分类于 Java

前言

前面介绍了从JVM源码看synchronized底层原理,讲的太乱太杂有点看不懂,先留着以后慢慢看。

这篇主要讲解面试中常问到的知识点:锁的几种状态,锁的膨胀以及锁的优化等。

阅读全文 »

从jvm源码看synchronized底层原理

发表于 2024-07-07 | 分类于 Java

前言

前面介绍了synchronized的用法和基本实现原理,synchronized是通过JVM内部的监视器锁(monitor)来实现的,但是监视器锁本质又是依赖于底层操作系统的Mutex Lock来实现的,而操作系统实现线程之间的切换就需要从用户态转换到内核态,这个成本非常高,状态之间的转换需要相对比较长的时间,这就是为什么说synchronized效率低的原因。这种依赖于操作系统Mutex Lock所实现的锁我们称之为重量级锁,JDK1.6之后对synchronized做的种种优化,如锁粗化(Lock Coarsening)、锁消除(Lock Elimination)、轻量级锁(Lightweight Locking)、偏向锁(Biased Locking)、适应性自旋(Adaptive Spinning)等技术来减少锁操作的开销,下面将从JVM源码层面查看这些优化的实现原理。

阅读全文 »

synchronized入门和实现原理

发表于 2024-07-06 | 分类于 Java

synchronized 简介

synchronized 是 Java 中的一种同步机制,用于防止多个线程同时访问共享资源。它可以用于方法和代码块,确保同一时间只有一个线程可以执行被 synchronized 保护的代码,同时还可以保证共享变量的内存可见性。

Java中每一个对象都可以作为锁,这是synchronized实现同步的基础。

阅读全文 »

Hexo博客源文件备份

发表于 2017-11-14 | 分类于 博客

前言

关于备份Hexo博客源文件,搜索了一遍网上的资料,我感觉比较有意思的有两种方式。一种是将Github上托管的博客版本库创建两个分支,缺点是操作比较繁琐,对于Git新手具有一定的挑战,一不小心可能会搞错;一种是另外创建一个存放博客源文件的Github代码库,利用AppVeyor进行持续集成和自动化部署,缺点是需要创建两个代码库,依赖一个新的东西AppVeyor。

既然想折腾,那就想点更好玩的吧。借鉴上面两种方式合起来操作,实现只用一个代码库,并使用AppVeyor进行自动化部署。

阅读全文 »

免费图床网站

发表于 2017-11-09 | 分类于 博客

推荐几个免费的图床,示例图片可用于双屏幕壁纸。简单介绍各个网站的特点,图片加载的速度可以在第一次进入网站时感受出来,有些小网站可能不稳定,请谨慎选择!

阅读全文 »

Github+Hexo博客搭建过程

发表于 2017-11-08 | 分类于 博客

本文是基于Windows平台,以最简单的步骤,展示我自己搭建的过程。

1. 准备工作

  • 注册一个Github账户
  • 安装Node.js,Node.js教程
  • 安装Git,Git教程
阅读全文 »

8 日志
2 分类
10 标签
© 2017 — 2024 hao0oah
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4