JDK源码阅读:并发容器

BlockingQueue在所有的并发容器中,BlockingQueue是最常见的一种。BlockingQueue是一个带阻塞功能的队列,当入队列时,若队列已满,则阻塞调用者;当出队列时,若队列为空,则阻塞调用者。在Concurrent包中,BlockingQueue是一个接口,有许多不同的实现类:

JDK源码阅读:同步工具类

SemaphoreSemaphore也是信号量,提供了资源数量的并发访问控制,其使用代码也很简单。如下所示:Semaphoresemaphore=newSemaphore(10,true);semaphore.acquire();semaphore.release();假设有n个线程来获取Semap

JDK源码阅读:Lock与Condition

互斥锁锁的可重入性因为在Concurrent包中的锁都是可重入锁,所以一般都命名为ReentrantX,因为所有的锁,可重入锁是指当一个线程调用object.lock()拿到锁,进入互斥区后,再次调用object.lock(),仍然可以拿到该锁。很显然,通常的锁都要设计成可重入的,否则就会发生死锁。

JDK源码阅读:Atomic类

AtomicInteger和AtomicLong悲观锁与乐观锁对于悲观锁,作者认为数据发生并发冲突的概率很大,所以在读操作之前就上锁。synchronized关键字,以及后面的ReentrantLock都是悲观锁的典型例子。对于乐观锁,作者认为数据发生并发冲突的概率比较小,所以在读操作之前不上锁。等

JDK源码阅读:多线程基础

线程的优雅关闭stop()与destory()函数线程是一段运行中的代码,或者说是一个运行中的函数,既然是在运行中,就存在一个最基本的问题,运行到一半的线程能否强制杀死。答案是肯定不能,在Java中,有stop和destory函数,但这些函数都是官方明确不建议使用的,原因很简单,如果强制杀死线程,则

Redis的事件

概述Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件:文件事件:Redis服务器通过套接字与客户端进行连接,而文件事件就是服务器对套接字操作的抽象,服务器与客户端的通信会产生相应的文件事件,而服务器则通过监听并处理这些事件来完成一系列网络通信操作。时间事件:Redis服务器中的一些操作

Redis的AOF持久化

概述除了RDB持久化功能,Redis还提供了AOF持久化功能。与RDB持久化功能通过保存数据库中的键值对来记录数据库状态不同,AOF持久化是通过保存Redis服务器所执行的写命令来记录数据库状态的。在AOF文件里面,除了用于指定数据库的SELECT命令是服务器自动添加之外,其他都是我们之前通过客户端

Redis的RDB持久化

概述Redis提供了RDB持久化功能,RDB持久化既可以手动执行,也可以根据服务器配置选项定期执行,该功能可以将某个时间点上的数据库状态保存到一个RDB文件中。RDB持久化功能所产生的RDB文件是一个经过压缩的二进制文件,通过该文件可以还原生成RDB文件时的数据库状态。因为RDB文件是保存在硬盘里面

Redis数据库

服务器中的数据库Redis服务器将所有数据库都保存在服务器状态redis.h/redisServer结构的db数组中,db数组的每个项都是一个redis.h/redisDb结构,每个redisDb结构代表一个数据库。structredisServer{//```//一个数组,保存着服务器中的所有数据

Redis中的对象

对象的类型与编码Redis使用对象来表示数据库中的键和值,每次当我们在Redis的数据库中新创建一个键值对时,我们至少会创建两个对象,一个对象用作键值对的键,另一个对象用作键值对的值。Redis中每个对象都由一个redisObject结构表示,该结构中和保存数据有关的三个属性分别是type属性、en