读写锁之ReadWriteLock源码分析

ReadWriteLock管理一组锁,一个是只读的锁,一个是写锁。读锁可以在没有写锁的时候被多个线程同时持有,写锁是独占的。所有读写锁的实现必须确保写操作对读操作的内存影响。换句话说,一个获得了读锁的线程必须能看到前一个释放的写锁所更新的内容。读写锁比互斥锁允许对于共享数据更大程度的并发。每次只能有一个写线程,但是同时可以有多个线程并发地读数据。ReadWriteLock适用于读多写少的...
并发

Java四种引用-强软弱虚

Fork/Join框架基本使用

1. 概述Java.util.concurrent.ForkJoinPool由Java大师Doug Lea主持编写,它可以将一个大的任务拆分成多个子任务进行并行处理,最后将子任务结果合并成最后的计算结果,并进行输出。本文中对Fork/Join框架的讲解,基于JDK1.8+中的Fork/Join框架实现,参考的Fork/Join框架主要源代码也基于JDK1.8+。 这几篇文章将试图解释Fo...
并发

MySQL一些规范以及优化问题

如何选择索引列的顺序?建立索引的目的是:希望通过索引进行数据查找,减少随机 IO,增加查询性能 ,索引能过滤出越少的数据,则从磁盘中读入的数据也就越少。 区分度最高的放在联合索引的最左侧(区分度=列中不同值的数量/列的总行数) 尽量把字段长度小的列放在联合索引的最左侧(因为字段长度越小,一页能存储的数据量越大,IO 性能也就越好) 使用最频繁的列放到联合索引的左侧(这样可以比较少的建...

Java浮点数精度问题

一、精度丢失的原因1234567891011121314151617181920212223首先我们要搞清楚下面两个问题:(1) 十进制整数如何转化为二进制数 算法很简单。举个例子,11表示成二进制数: 11/2=5 余 1 5/2=2 余 1 ...
Java

获取class对象六种方法

简述Class类是Java反射机制的入口,封装了一个类或接口的运行时信息,通过调用Class类的方法可以获取这些信息。Class类有如下特点:1、该类在java.lang包中,不需要引包2、该类被final修饰,不可被继承3、该类实现了Serializable接口4、该类的构造方法被private修饰,不能通过关键字new创建该类的对象 获取对应class类对象1、(建议)通过Class...
Java

LockSupport简单用法及原理

简介LockSupport是一个线程阻塞工具类,所有的方法都是静态方法,可以让线程在任意位置阻塞,当然阻塞之后肯定得有唤醒的方法。 作用接下面我来看看LockSupport有哪些常用的方法。主要有两类方法:park和unpark。 12345678public static void park(Object blocker); // 暂停当前线程public static void pa...
并发

Java9-Java14新特性

待完善…

Java

数组和链表的区别

数组和链表是两种基本的数据结构,他们在内存存储上的表现不一样,所以也有各自的特点。

Java

InnoDB引擎 - 行记录存储 - Compact 行格式

待完善…