Java
文章平均质量分 96
猫吻鱼
不是我鸽,是我太忙。
感觉要猝死
展开
-
Java基础 : CompletableFuture② 代码浅析
在Java基础CompletableFuture①基础使用中我们介绍了CompletableFuture的基础使用,本文来对其代码进行分析,由于个人能力所限并且文章编写时间太长(写了三四个月总被各种事情打断CompletableFuture代表一个执行阶段,一个阶段的执行可能是被单个阶段的完成触发,也可能是由多个阶段一起触发。以下面的代码为例(为例方便讲解,这里把代码写的比较复杂)//输出}CompletableFuture#postComplete会执行清栈操作。......原创 2022-07-16 10:57:30 · 1052 阅读 · 1 评论 -
Java基础 : CompletableFuture① 基础使用
CompletableFuture基本使用,建议阅读原文。本文在个人理解基础上有部分删改,仅用于个人学习记录,限于个人能力本文可能出现错漏,因此再次建议阅读原文CompletableFuture基本使用。CompletableFuture是在阅读Dubbo异步调用时接触到的内容,当时一直对CompletableFuture进行了简单的学习,碍于时间原因一直没有记录,趁现在有时间对CompletableFuture进行更深入的学习并记录。借CompletableFuture基本使用图源。.........原创 2022-07-16 10:55:54 · 1473 阅读 · 0 评论 -
Quartz 定时任务
1. Quartzhttps://www.cnblogs.com/zhanghaoliang/p/7886110.html/** * @Data: 2019/9/24 * @Des: 定时任务工厂类 */@Componentpublic class QuartzJobFactory extends AdaptableJobFactory { @Autowired ...原创 2019-09-29 09:53:48 · 512 阅读 · 0 评论 -
NIO 源码浅析
一、前言二、正文1. Selector.open();http://www.myexception.cn/program/1598318.htmlhttps://www.iteye.com/blog/goon-1775421https://blog.csdn.net/u010412719/article/details/52809669原创 2020-01-14 19:37:07 · 725 阅读 · 0 评论 -
BIO、NIO实现聊天室
一、前言二、简介三、实现1. BIO2. NIOSocketChannel.read(ByteBuffer dst) 返回值:返回-1 : 客户端的数据发送完毕,并且主动的close socket。所以在这种场景下,(服务器程序)你需要关闭socketChannel并且取消key,最好是退出当前函数。注意,这个时候服务端要是继续使用该socketChannel进行读操作的话,就会抛出“...原创 2020-01-08 09:54:34 · 491 阅读 · 0 评论 -
Lambda 优雅的处理编译时异常
一、前言Lambda 表达式 在日常开发过程中实在是太方便了,功能强大且简化了很多代码。但是遇上编译时异常时候却很尴尬。由于Lambda无法抛出异常,导致你必须要对异常进行捕获。这样写起来的点就很丑。本篇针对这个问题进行了一些改进。二、示例一个简单的集合遍历如下: public static void main(String[] args) { List<...原创 2020-01-03 16:52:17 · 637 阅读 · 1 评论 -
AQS(AbstractQueuedSynchronizer)源码解析
二、AQSSemaphore 底层基于AQS(AbstractQueuedSynchronizer)实现。1. 介绍AQS提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架。AQS 有两个关键的组件state 同步变量, int 类型。Node 同步队列1.1、 state 原子变量详看: https://www.jianshu.com/p/da9d051dcc3d...原创 2019-12-04 15:05:20 · 1184 阅读 · 0 评论 -
关于Semaphore的源码的一些小探索
一、前言二、AQSSemaphore 底层基于AQS(AbstractQueuedSynchronizer)实现。1. 介绍AQS定义两种资源共享方式:Exclusive(独占,只有一个线程能执行,如ReentrantLock)和Share(共享,多个线程可同时执行,如Semaphore/CountDownLatch)。AQS提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架...原创 2019-11-23 15:36:00 · 623 阅读 · 0 评论 -
HashMap、HashTable、ConcurrentHashMap一些小总结
文章目录一、 前言二、HashMap0. 简介1、put 方法2、get 方法3、遍历4、HashTable二、ConcurrentHashMap1. CAS一、 前言二、HashMap0. 简介HashMap 底层实现是通过一个内部类数组 transient Node<K,V>[] table;这里Node是个自定义内部类如下 static class Node<...原创 2019-11-15 14:13:46 · 706 阅读 · 0 评论 -
ThreadLocal使用及源码分析
ThreadLocal 为每个线程开辟了一个副本内容,各个线程使用副本内容并不相互影响。比如在连接数据库时,Connect 的连接,多线程的操作,我们就可以将 Connection使用ThreadLocal 来修饰,为每个线程开辟出各自的连接。...原创 2019-11-06 17:23:08 · 633 阅读 · 0 评论 -
JAVA代理模式详解
以下:内容主要参考 https://www.cnblogs.com/cenyu/p/6289209.html、https://blog.csdn.net/zsbgood/article/details/81160758、https://www.cnblogs.com/jing99/p/6404044.html 。部分内容有参考已标注,如有侵扰,联系删除。 内容仅用于自我记录学习使用。如有错误,欢迎...原创 2019-07-15 16:23:05 · 553 阅读 · 0 评论 -
多线程技术概述
一.多线程1. 单独调用Thread或者Runnable对象的run方法并不会开辟一个新线程,仍会在当前线程中运行。开辟新线程需要通过调用start方法2. 线程存在 新生、可运行、阻塞、死亡四种状态。新生指new出来线程对象但是还没有开始运行。可运行指线程对象调用了start方法。注意可运行状态的线程可能运行了也可能没有运行,这取决于操作系统的分配。阻塞线程的情况可能是: 调用slee...原创 2019-04-26 15:48:21 · 556 阅读 · 0 评论