深入理解JVM—JVM内存模型

我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等待成本,但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,因此,为了解决这一纠纷,...

2019-07-12 11:16:54

阅读数 11

评论数 0

MySQL-InnoDB事务隔离级别和锁机制

一、基础知识 1.索引 1.1 聚集索引 InnoDB中的表是索引组织表,即表中的数据按主键顺序存放。 聚集索引即按照每张表的主键构造一棵B+树,同时叶子节点中存放的即为整张表的行记录数据。也将聚集索引的叶子节点称为数据页,每个数据页都通过一个双向链表来进行链接。对于聚集索引来说,索引...

2019-07-09 14:30:48

阅读数 22

评论数 0

java并发锁机制----ReentrantReadWriteLock读写锁源码分析

使用示例 下面这个例子非常实用: // 这是一个关于缓存操作的故事 class CachedData { Object data; volatile boolean cacheValid; // 读写锁实例 final ReentrantReadWriteLo...

2019-07-05 17:08:35

阅读数 17

评论数 0

Thread类中的方法:join()、sleep()、yield()之间的区别

1. Thread类中的常用方法简介 首先,先看一下Thread类中的常见方法: 最主要的是区分其中join()、sleep()、yield()的用法区别 2. Join()方法 Thread的非静态方法join()让一个线程等待另外一个线程完成才继续执行。如果线程A执行体中调用B线程...

2019-07-02 18:14:19

阅读数 14

评论数 0

java并发锁机制----ReentrantLock 原理解析之Condition实现原理

1、java.util.concurrent.locks.Condition接口一览: void await() throws InterruptedException; void awaitUninterruptibly(); long awaitNanos(long nanosTime...

2019-06-28 18:03:10

阅读数 14

评论数 0

J.U.C之AQS:源码解析共享式同步实现

获取共享式同步状态 总体图 入口函数 public final void acquireShared(int arg) { /* *子类实现tryAcquireShared能否获取的共享式同步状态 *如果返回>=0则获取同...

2019-06-20 20:28:40

阅读数 21

评论数 0

J.U.C之AQS:AQS概述和使用

AQS是什么 AQS是AbstractQueuedSynchronizer的缩写,翻译过来就是"同步器",AbstractQueuedSynchronizer是一个抽象类,Java并包里大部分并发工具类都将其作为核心基础构件,比如可重入锁ReentrantLock, 信号量S...

2019-06-19 09:54:06

阅读数 28

评论数 0

J.U.C之AQS:源码解析独占式同步实现

获取独占式同步状态 整体流程图 入口函数 public final void acquire(int arg) { /* *子类实现tryAcquire能否获取的独占式同步状态 *如果返回true则获取同步状态成功方法直接返...

2019-06-18 11:40:03

阅读数 17

评论数 0

Java多线程编程-(4)-线程间通信机制的介绍与使用(阻塞队列实现)

上一篇: Java多线程编程-(3)-线程本地ThreadLocal的介绍与使用 线程间通信简介 我们知道线程是操作系统中独立的个体,但是这个单独的个体之间没有一种特殊的处理方式使之成为一个整体,线程之间没有任何交流和沟通的话,他就是一个个单独的个体,不足以形成一个强大的交互性较强的整体。...

2019-06-12 18:26:14

阅读数 34

评论数 0

Java多线程编程-(11)-从volatile和synchronized的底层实现原理看Java虚拟机对锁优化所做的努力

一、背景 对于Java来说我们知道,Java代码首先会编译成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上进行执行。 Java中所使用的并发机制依赖于JVM的实现和CPU的指令。 下边我们对常见的实现同步的两个关键字volatile和syn...

2019-06-12 18:13:01

阅读数 26

评论数 0

volatile关键字解析

转载自:http://www.cnblogs.com/dolphin0520/p/3920373.html    volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volat...

2019-06-12 17:58:08

阅读数 54

评论数 0

Java多线程编程-(3)-线程本地ThreadLocal的介绍与使用

上一篇: Java多线程编程-(2)-可重入锁以及Synchronized的其他基本特性 ThreadLocal简介 我们通过上两篇的学习,我们已经知道了变量值的共享可以使用public static变量的形式,所有的线程都使用同一个被public static修饰的变量。 那么如果我们...

2019-06-12 11:52:11

阅读数 24

评论数 0

Java多线程编程-(2)-可重入锁以及Synchronized的其他基本特性

Java多线程编程-(1)-线程安全和锁Synchronized概念 基本介绍了进程和线程的区别、实现多线程的两种方式、线程安全的概念以及如何使用Synchronized实现线程安全,下边介绍一下关于Synchronized的其他基本特性。 一、Synchronized锁重入 (1)关键字...

2019-06-12 11:29:51

阅读数 29

评论数 0

synchronized实现原理

synchronized可以保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区,同时它还可以保证共享变量的内存可见性 Java中每一个对象都可以作为锁,这是synchronized实现同步的基础: 普通同步方法,锁是当前实例对象 静态同步方法,锁是当前类的class对象 同...

2019-06-12 11:03:51

阅读数 29

评论数 0

java并发锁机制----ReentrantLock 原理解析

什么是AQS AQS即是AbstractQueuedSynchronizer,一个用来构建锁和同步工具的框架,包括常用的ReentrantLock、CountDownLatch、Semaphore等。 AQS没有锁之类的概念,它有个state变量,是个int类型,在不同场合有着不同含义。本文研...

2019-06-11 19:14:25

阅读数 70

评论数 0

同步synchronized与ReentrantLock简单应用及分析

在多线程的应用中,两个或者两个以上的线程需要共享同一个资源。如果多个线程同时在访问同一资源时,都做出了相应的操作来获取自己想要的资源,在这种情况下很难保证获取资源的准确性和唯一性,相互之间产生冲突,通常称之为竞争条件。 关于竞争条件的理解:比如火车买票,火车票(数量、座位号等等)是一定的,但卖火...

2019-06-11 14:55:51

阅读数 32

评论数 0

interrupt()和线程终止方式

1. interrupt()说明 在介绍终止线程的方式之前,有必要先对interrupt()进行了解。 关于interrupt(),java的djk文档描述如下:http://docs.oracle.com/javase/7/docs/api/ Interrupts this thread....

2019-06-11 10:13:07

阅读数 34

评论数 0

线程等待与唤醒实测讲解

1.wait(), notify(), notifyAll()等方法介绍 在Object.java中,定义了wait(), notify()和notifyAll()等接口。wait()的作用是让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁。而notify()和notif...

2019-06-10 16:05:04

阅读数 23

评论数 0

java 线程的几种状态

java thread的运行周期中, 有几种状态, 在 java.lang.Thread.State 中有详细定义和说明: NEW状态是指线程刚创建, 尚未启动 RUNNABLE状态是线程正在正常运行中, 当然可能会有某种耗时计算/IO等待的操作/CPU时间片切换等, 这个状态下发生的等待一般...

2019-06-10 15:01:00

阅读数 23

评论数 0

happens-before概要俗解

学习Java并发,到后面总会接触到happens-before偏序关系。初接触玩意儿简直就是不知所云,下面是经过一段时间折腾后个人对此的一点浅薄理解,希望对初接触的人有帮助。如有不正确之处,欢迎指正。 synchronized、大部分锁,众所周知的一个功能就是使多个线程互斥/串行的(共享锁允许多...

2019-06-10 11:13:02

阅读数 41

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭