摘要:
一、Selector(选择器)介绍 Selector 一般称 为选择器 ,当然你也可以翻译为 多路复用器 。它是Java NIO核心组件中的一个,用于检查一个或多个NIO Channel(通道)的状态是否处于可读、可写。如此可以实现单线程管理多个channels,也就是可以管理多个网络链接。 为什么
阅读全文
posted @ 2020-12-29 01:32
H__D
阅读(234)
推荐(0)
摘要:
一、Channel(通道)介绍 通常来说NIO中的所有IO都是从 Channel(通道) 开始的。 从通道进行数据读取 :创建一个缓冲区,然后请求通道读取数据。 从通道进行数据写入 :创建一个缓冲区,填充数据,并要求通道写入数据。 数据读取和写入操作图示: Java NIO Channel通道和流非
阅读全文
posted @ 2020-12-28 20:32
H__D
阅读(395)
推荐(0)
摘要:
一、Buffer(缓冲区)介绍 1.1、Buffer(缓冲区)介绍 Java NIO Buffers用于和NIO Channel交互。 我们从Channel中读取数据到buffers里,从Buffer把数据写入到Channels. Buffer本质上就是一块内存区,可以用来写入数据,并在稍后读取出来
阅读全文
posted @ 2020-12-28 20:03
H__D
阅读(178)
推荐(0)
摘要:
一、Java NIO简介 Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作
阅读全文
posted @ 2020-12-28 18:40
H__D
阅读(215)
推荐(0)
摘要:
原子(atomic)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为“不可被中断的一个或一系列操作”。在多处理器上实现原子操作就变得有点复杂。让我们一起来聊一聊在Intel处理器和Java里是如何实现原子操作的。 1. 术语定义 在了解原子操作的实现原理前,先
阅读全文
posted @ 2020-12-28 00:21
H__D
阅读(505)
推荐(0)
摘要:
一、synchronized基础 synchronized关键字在需要原子性、可见性和有序性这三种特性的时候都可以作为其中一种解决方案,看起来是“万能”的。的确,大部分并发控制操作都能使用synchronized来完成。在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重
阅读全文
posted @ 2020-12-26 16:55
H__D
阅读(325)
推荐(0)
摘要:
运行时举例 图解示例 代码 1 public class RuntimeDemo { 2 public static void main(String[] args) { 3 int x = 500; 4 int y = 100; 5 int a = x / y; 6 int b = 50; 7 S
阅读全文
posted @ 2020-12-25 18:48
H__D
阅读(124)
推荐(0)
摘要:
1、栈 堆 方法区的交互关系 从内存结构来看 从线程共享与否的角度来看 栈、堆、方法区的交互关系 下面就涉及了对象的访问定位 Person 类的 .class 信息存放在方法区中 person 变量存放在 Java 栈的局部变量表中 真正的 person 对象存放在 Java 堆中 在 person
阅读全文
posted @ 2020-12-25 16:30
H__D
阅读(633)
推荐(0)
摘要:
一、什么是CPU缓存 1. CPU缓存的来历 众所周知,CPU是计算机的大脑,它负责执行程序的指令,而内存负责存数据, 包括程序自身的数据。在很多年前,CPU的频率与内存总线的频率在同一层面上。内存的访问速度仅比寄存器慢一些。但是,这一局面在上世纪90年代被打破了。CPU的频率大大提升,但内存总线的
阅读全文
posted @ 2020-12-23 16:00
H__D
阅读(960)
推荐(0)
摘要:
双重锁校验单例 代码如下: 1 public class DoubleCheckedLock { 2 3 // 使用volatile修饰禁止重排序 4 private volatile static DoubleCheckedLock instance; 5 6 private DoubleChec
阅读全文
posted @ 2020-12-22 22:48
H__D
阅读(1319)
推荐(0)