JAVA学习
文章平均质量分 55
保存java学习的笔记
tyzsm
Coder
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JAVA的NIO模型
JAVA的NIO模型什么是NIONIO的基本组成NIO的epoll BUG什么是NIOjava的NIO全称为non-blocking IO,使用它可以提供非阻塞式的高伸缩性网络NIO的基本组成NIO主要有三部分:Channel、Buffer和SelectorChannel是一个对象,可以用过它进行数据的读取和写入,它是面向缓冲区的,所有的数据都通过Buffer来处理,永远不会直接将字节写入通道中,而是将数据写入包含一个字节或者多个字节的缓冲区早多线程模式下,阻塞IO时,一个线程只能处理一个请求,原创 2022-04-20 21:42:14 · 870 阅读 · 0 评论 -
服务注册中心概述
服务注册中心概述多款注册中心比较多款注册中心比较序号比较项EurekazookeeperNacosConsul1集群结构平级主从支持平级和主从主从2集群角色主人Leader、follower observerleader、follower、candidateserver-leader、server以及client3是否可以及时知道服务状态变化不能及时知道会及时知道不能及时知道不能及时知道4一致性协议(CAP)注重可用性(AP原创 2022-04-17 22:37:46 · 1781 阅读 · 0 评论 -
JAVA学习——基于AQS的共享式锁CountDownLatch解析
笔者最近在解析基于AQS的ReentrantLock实现,ReentrantLock是可重入的独占锁,今天解析一下juc包中的共享锁CountDownLatch实现,仅当笔记。CountDownLatch是一种共享锁,区别于独占锁,共享锁在某一个时刻可能有多个线程同时访问共享资源,当指定的线程都完成操作后,CountDownLatch才允许后续的操作继续进行。就好像百米赛跑,只有所有选手都跑完全程,裁判才能记录选手成绩,在此之前,裁判只能等待。CountDownLatch与ReentrantLock.原创 2020-06-28 22:28:42 · 457 阅读 · 0 评论 -
JAVA学习——基于AQS的ReentrantLock公平锁和非公平锁的实现
之前笔者解析了AQS的源码,在JUC中有很多锁是基于AQS实现的,今天想写个简单的ReentrantLock实现,代码也基本是在看了ReentrantLock源码后写出来的,做个笔记原创 2020-06-27 21:47:33 · 1056 阅读 · 0 评论 -
Java学习——AQS解析
最近在学习JUC,发现里面大部分的并发组件都是基于AQS,因此研读了一下源码,在此做个笔记。AQS(AbstractQueuedSynchronizer)翻译为抽象队列同步器,是除Synchronized关键字外java自带的锁机制。AQS使用一个int类型变量state来表示线程要竞争的资源,state的值即为可获取的资源数,当一个线程尝试获取锁时,会使用CAS方式去尝试改变state的值,如果改变成功,即获取了锁。CAS的实现是使用了Unsafe类底下的一系列compareAndSet*方法,这.原创 2020-06-15 22:26:45 · 327 阅读 · 0 评论 -
Java学习——ArrayList的源码解析
ArrayList是JAVA的一种泛型容器,它实际上是一个用数组实现的链表,今天解析一下ArrayList的源码,并写个简单的实现。ArrayList的依赖关系首先我们来看ArrayList的依赖继承关系:通过ArrayList继承实现的接口说明了该类具有以下特性:ArrayList具有链表的特性Collection接口表示ArrayList是一个数据集合,但是这个数据集合没有位置和顺序关系,因此ArrayList实现了类似isEmpty,contains的方法RandomAccess接口说原创 2020-06-02 22:57:31 · 248 阅读 · 0 评论 -
Java——CompletableFuture接口解析
CompletableFuture接口说明CompletableFuture是Future的子类,接口Future接口虽然实现了异步调用,但是存在一个问题,为了判断线程是否已完成计算,或者要获取计算结果,我们需要不断的轮询,通过循环调用Future的isDone方法或者是直接调用get的方法阻塞线程。在JDK8中,提供了CompletableFuture类来解决这类问题,它可以在线程完成计算后用when、then等方式调用我们定义后续处理方法,省去了轮询的操作(笔者最近在读RocketMQ源码,发现在B原创 2020-05-27 20:43:37 · 871 阅读 · 0 评论 -
java——线程创建与Callable接口解析
在Java当中,最基本的线程创建方法有两种,一种是通过继承Thread类,重写run方法:class MyThread extends Thread{ @Override public void run() { System.out.println("this is MyThread!"); } } public static void main(String[] args) { Thread myT原创 2020-05-20 22:27:04 · 465 阅读 · 0 评论 -
Java线程池简单实现
工作中经常用到线程池实现并发设计,基本都是使用的Java自带的线程池,写了个简单的demo,说明Java自带线程池的基本原理。ThreadPool主要有coreSize(核心线程数)、maximumSize(最大线程数)、任务队列和线程队列参数,这主要是因为线程池具有动态创建线程和销毁的特性。为此线程池的相关参数设置: private final int coreSize; //核心线...原创 2020-04-06 18:04:48 · 245 阅读 · 0 评论
分享