随笔分类 -  多线程

多线程相关、线程池、线程通信、juc相关
摘要:基于依赖程序的版本信息:HikariCP:3.3.1 驱动程序mysql-connector-java:8.0.17 上一篇:Druid是如何管理数据库连接的 零、类图和流程图 开始前先来了解下HikariCP获取一个连接时类间的交互流程,方便下面详细流程的阅读。 获取连接时的类间交互: 图1 一、 阅读全文
posted @ 2019-08-28 00:18 是胖虎捏 阅读(6508) 评论(1) 推荐(1) 编辑
摘要:基于依赖程序的版本信息:druid:1.1.16 驱动程序mysql-connector-java:8.0.17 下一篇:HikariCP是如何管理数据库连接的 零、类图&流程预览 下方流程中涉及到的类、属性、方法名均列在这里:Druid-类图-属性表 ←该表格用来辅助理解下面的流程图和代码,不用细 阅读全文
posted @ 2019-08-28 00:16 是胖虎捏 阅读(11051) 评论(10) 推荐(9) 编辑
摘要:本篇文章基于上一篇,只针对数据采集做介绍,会提供一个SDK的实现和使用,会做实现方案的介绍,具体详细介绍下面边框加粗的部分: 一、数据采集 接着拿上一篇里的例子来说,把例子里的图贴过来: 图1 简单回顾下上图,一次API调用,完成上面各个业务服务的调用,然后聚合所有服务的信息,然后Redis_02的 阅读全文
posted @ 2019-04-15 22:20 是胖虎捏 阅读(2829) 评论(1) 推荐(0) 编辑
摘要:一、分布式链路追踪可以做什么? 1.1:简单集群架构&微服务架构 先来看下最简单的网站集群架构图: 图1 在这个图里,存在从1~n个服务器,通过负载均衡器SLB进行请求分发,在每个服务器里,都做同一件事情。 现在来看下这个系统的具体业务逻辑(就是图1中每台服务器执行的逻辑,这里是假设其中一个业务接口 阅读全文
posted @ 2019-04-11 08:56 是胖虎捏 阅读(9764) 评论(3) 推荐(0) 编辑
摘要:注:本篇文章例子基于上一篇进行:Java NIO学习与记录(七): Reactor单线程模型的实现 前言:单线程Reactor模型的缺点 紧接着上篇Reactor单线程模型的例子来,假设Handler的read那里的处理方式延迟5s,当做是业务性能瓶颈,改变下原来的Handler,让其read方法在 阅读全文
posted @ 2019-04-01 23:46 是胖虎捏 阅读(3087) 评论(2) 推荐(3) 编辑
摘要:一、Selector&Channel 1.1:各种channel 写这个模型需要提前了解Selector以及Channel,之前记录过FileChannel,除此之外还有以下几种Channel: ServerSocketChannel:用于监听新的TCP连接的通道,负责读取&响应,通常用于服务端的实 阅读全文
posted @ 2019-03-27 21:59 是胖虎捏 阅读(2940) 评论(10) 推荐(5) 编辑
摘要:上一篇说的是基于操作系统的IO处理模型,那么这一篇来介绍下服务器端基于IO模型和自身线程的处理方式。 一、基于BIO下的线程处理模式 这种处理模型是基于阻塞IO进行的,上一篇讲过,阻塞IO会阻塞每一个IO操作,直到事件就绪,下面来看下阻塞IO下的服务端线程模型: 图1 如上图所示,该线程模型基于阻塞 阅读全文
posted @ 2019-03-20 23:12 是胖虎捏 阅读(3045) 评论(0) 推荐(1) 编辑
摘要:在开始介绍NIO Reactor模式之前,先来介绍下操作系统的五种I/O模型,了解了这些模型,对理解java nio会有不小的帮助。 前言:一次网络请求的流程 先来看下一个服务端处理一次网络请求的流程图: 图1 一、图1解析 1.1:内核空间&用户空间 内核空间:指操作系统运行时用于程序调度、虚拟内 阅读全文
posted @ 2019-03-19 13:53 是胖虎捏 阅读(951) 评论(0) 推荐(0) 编辑
摘要:一、线程池的Future模式 在了解java8的CompletableFuture之前,先通过Future来解决一个问题,看个例子: 假设现在有一个网站,首页有顶部Banner位、左边栏、右边栏、用户信息几大模块需要加载,现在出一个接口,要求包装并吐出这几大模块的内容 先来抽象一个首页接口对象: p 阅读全文
posted @ 2019-03-14 22:50 是胖虎捏 阅读(2223) 评论(0) 推荐(0) 编辑
摘要:一、join & interrupt 这俩方法属于线程对象里的方法,属于线程本身的操作。 1.1:join方法 用于等待一个线程的终止,等待期间将会阻塞,直到被等待的线程终止结束。 所以join可以用来做多任务异步处理,比如还是拿利用CompletableFuture优化程序的执行效率这篇里的第一个 阅读全文
posted @ 2019-03-13 09:08 是胖虎捏 阅读(734) 评论(0) 推荐(0) 编辑
摘要:SocketChannel可以创建连接TCP服务的客户端,用于为服务发送数据,SocketChannel的写操作和连接操作在非阻塞模式下不会发生阻塞,这篇文章里的客户端采用SocketChannel实现,利用线程池模拟多个客户端并发访问服务端的情景。服务端仍然采用ServerSocket来实现,主要 阅读全文
posted @ 2019-03-08 23:18 是胖虎捏 阅读(919) 评论(0) 推荐(0) 编辑
摘要:上一篇知道了Buffer的工作机制,以及FileChannel的简单用法,这一篇介绍下 Scatter&Gather 1.Scatter(分散) 用于描述在Channel中读取的数据分散在不同的Buffer里。 接着上一篇的例子(rua文件内容为123456789),改造下代码: readFile 阅读全文
posted @ 2019-03-07 09:21 是胖虎捏 阅读(638) 评论(0) 推荐(0) 编辑
摘要:上一篇简单介绍了NIO,这一篇将介绍FileChannel结合Buffer的用法,主要介绍Buffer FileChannel的简单使用&Buffer的介绍 一、FileChannel例子 上一篇说到,这个Channel属于文件通道,专门读取文件信息,NIO读取文件内容的简单的例子: public 阅读全文
posted @ 2019-03-05 23:56 是胖虎捏 阅读(1334) 评论(1) 推荐(4) 编辑
摘要:工作中有些地方用到了netty,netty是一个NIO框架,对于NIO却不是那么熟悉,这个系列的文章是我在学习NIO时的一个记录,也期待自己可以更好的掌握NIO。 一、NIO是什么? 非阻塞式IO,与传统的BIO(阻塞式IO)不同,NIO可以通过通道(Channels)来监听各通道的动作,一个线程就 阅读全文
posted @ 2019-03-05 08:55 是胖虎捏 阅读(536) 评论(0) 推荐(0) 编辑
摘要:去年看完的《图解java多线程设计模式》,可惜当时没做笔记,导致后来忘了许多东西,打算再温习下这本书,顺便在这里记录一下~ 一、顺序执行、并行、并发 顺序执行:多个操作按照顺序依次执行。 并行:多个任务同时进行,同一时间内可以执行多个任务,这种方式,叫做并行执行,比如多核处理器,多个核可以同时处理多 阅读全文
posted @ 2019-02-26 23:22 是胖虎捏 阅读(3119) 评论(0) 推荐(1) 编辑
摘要:上一篇:ThreadLocal系列(二)-InheritableThreadLocal的使用及原理解析 一、基本使用 首先,TTL是用来解决ITL解决不了的问题而诞生的,所以TTL一定是支持父线程的本地变量传递给子线程这种基本操作的,ITL也可以做到,但是前面有讲过,ITL在线程池的模式下,就没办法 阅读全文
posted @ 2019-02-20 22:40 是胖虎捏 阅读(38923) 评论(9) 推荐(10) 编辑
摘要:上一篇:ThreadLocal系列(一)-ThreadLocal的使用及原理解析 下一篇:ThreadLocal系列(三)-TransmittableThreadLocal的使用及原理解析 一、基本使用 我们继续来看之前写的例子: private static ThreadLocal tl = ne 阅读全文
posted @ 2019-02-19 12:23 是胖虎捏 阅读(9686) 评论(1) 推荐(4) 编辑
摘要:项目中我们如果想要某个对象在程序运行中的任意位置获取到,就需要借助ThreadLocal来实现,这个对象称作线程的本地变量,下面就介绍下ThreadLocal是如何做到线程内本地变量传递的, 下一篇:ThreadLocal系列(二)-InheritableThreadLocal的使用及原理解析 一、 阅读全文
posted @ 2019-02-15 11:12 是胖虎捏 阅读(6188) 评论(0) 推荐(3) 编辑
摘要:借助juc里的ReentrantLock实现一个阻塞队列结构: 以上为主要代码,下面进行简单的测试: 运行结果: 阅读全文
posted @ 2019-02-12 16:44 是胖虎捏 阅读(890) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示