logo头像
Snippet 博客主题

JDK源码分析之——AQS

在Java高并发编程中,我们经常会用到ReentrantLock、CountDownLatch、Semaphore等同步类,它们的功能可能不尽相同,但是它们都有一个共同点,就是实现依赖了AQS(AbstractQueuedSynchr...

Java并发中遇到的锁

在Java高并发编程中,会遇到各种锁,这里简单介绍一下各种锁的分类。涉及到了以下内容: ①公平锁/非公平锁 ②可重入锁 ③独享锁/共享锁 ④互斥锁/读写锁 ⑤乐观锁/悲观锁 ⑥分段锁 ⑦偏向锁/轻量级锁/重量级锁 ⑧自旋锁 上面是很多...

JVM运行时数据区域

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域依赖用户线程的启动和结束而建立和销毁。 1.程序计数器程序...

关于多线程的锁优化

1.如何提供锁的性能1.1减小锁持有时间:对于使用锁进行并发控制的应用程序而言,在锁竞争的过程中,单个线程的持有时间与系统性能有着直接的关系。减少锁的持有时间有助于降低锁冲突的可能性,进而提高系统的并发能力。 1.2减小锁粒度:所谓减...

Java线程池浅析

为了避免系统频繁地创建和销毁线程,我们可以让创建的线程进行复用,于是我们可以把创建的线程放入一个池子里管理起来,即线程池。在线程池中,总有那么几个活跃线程。当需要使用线程时,可以从池子中随便拿一个空闲线程,当完成工作时,并不急着关闭线...

JDK并发包

1.同步控制1.1重入锁重入锁使用java.util.concurrent.locks.ReentrantLock类来实现的,它完全可以替代synchronized关键字。与synchronized相比,重入锁有着显式的操作过程,开发...

Java多线程基础

1.基本特性1.1特性①原子性:原子性是指一个操作是不可中断的; ②可见性:可见性是指当一个线程修改了某一个共享变量的值,其他线程是否能够立即知道这个修改; ③有序性:即程序执行的顺序按照代码的先后顺序执行。 1.2指令重排在计算机执...

Spring IOC和DI简单理解

1.IOC是什么Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,IOC意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好IOC呢?理解...

JVM之指令重排分析

引言:在Java中看似顺序的代码在JVM中,可能会出现编译器或者CPU对这些操作指令进行了重新排序;在特定情况下,指令重排将会给我们的程序带来不确定的结果….. 1.什么是指令重排?在计算机执行指令的顺序在经过程序编译器编译之后形成的...