07_03_中断响应 2022-05-15 2023-04-03 编程语言 / Java 12 分钟读完 (大约1789个字)中断响应在取消任务和中断线程中,中断都起到了很大作用: 取消任务,最合理的方式就是使用中断 中断线程,线程收到中断后作何处理 但是有个问题: 任务和线程都能接收中断请求,那怎么区分? 也就是,中断响应由谁来负责? java, 并发编程 阅读更多
06_任务的执行 2022-05-15 2023-04-03 编程语言 / Java 18 分钟读完 (大约2661个字)任务的执行一、在线程中执行任务1.1 串行执行串行执行,是指所有任务都在单个线程中串行地执行。 123456789class SingleThreadWebServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(80); while (true) { Socket connection = serverSocket.accept(); handleRequest(connection); } }} 串行执行,一般来说吞吐率或速响应性都比较差。 java, 并发编程 阅读更多
05_基础构建模块 2022-05-15 2023-04-03 编程语言 / Java 11 分钟读完 (大约1605个字)基础构建模块一、同步容器 同步容器类都是线程安全的,比如 Vector 和 HashTable 实现线程安全的方式是:将它们的状态都封装起来,所有对外接口都是同步方法 对容器状态的访问都串行化,保证每次只有一个线程访问容器 能保证单个操作是线程安全的,但是复合操作是不能保证线程安全的 常见的不安全的复合操作包括:迭代、跳转、条件运算 java, 并发编程 阅读更多
07_01_任务取消 2022-05-15 2023-04-03 编程语言 / Java 9 分钟读完 (大约1298个字)任务取消任务、线程、服务、应用程序之间的关系: 任务是最小的执行单元 任务在线程中执行 线程在服务(比如线程池服务)中运行 服务在应用程序(JVM)中运行 java, 并发编程 阅读更多
04_对象的组合 2022-05-15 2023-04-03 编程语言 / Java 14 分钟读完 (大约2039个字)对象的组合一、设计线程安全的类1.1 设计过程1.1.1 收集对象状态 收集类对象的所有状态 如果对象中引用了其他对象,那么该对象的状态也包括引用对象的状态 如果发布了某个可变对象的引用,那么就不应该算作对象的状态 java, 并发编程 阅读更多
03_对象的共享 2022-05-15 2023-04-03 编程语言 / Java 25 分钟读完 (大约3739个字)对象的共享一、共享对象可能存在的问题? 多个线程同时访问或修改共享对象时,可能会出现冲突,即原子性问题 一个线程修改对象状态后,其他线程未必能够看到发生的变化,即内存可见性 java, 并发编程 阅读更多
02_线程安全性 2022-05-15 2023-04-03 编程语言 / Java 4 分钟读完 (大约588个字)线程安全性一、什么是线程安全? 当多个线程访问某个类时,这个类始终能表现出正确的行为,就称这个类是线程安全的 线程安全类,一般都封装了必要的同步机制,使用时无需额外进行同步 java, 并发编程 阅读更多
05_指令集和解释器 2022-02-21 2023-04-03 编程语言 / Java 1 小时读完 (大约7859个字)指令集和解释器Java虚拟机顾名思义,就是一台虚拟的机器,而字节码(bytecode)就是运行在这台虚拟机器上的机器码。 一、字节码指令1.1 指令结构字节码中存放编码后的 Java 虚拟机指令: 每条指令都以一个单字节的操作码(opcode)开头。 由于只使用一字节表示操作码,Java 虚拟机最多只能支持 256 条指令。 到第八版为止,Java 虚拟机规范已经定义了205条指令,操作码分别是0(0x00)到 202(0xCA)、254(0xFE)和 255(0xFF)。 java, JVM 阅读更多
04_运行时数据区 2022-01-15 2023-04-03 编程语言 / Java 21 分钟读完 (大约3126个字)运行时数据区一、数据结构在运行Java程序时,Java虚拟机需要使用内存来存放各式各样的数据。Java虚拟机规范把这些内存区域叫作运行时数据区。 运行时数据区可以分为两类:一类是多线程共享的,另一类则是线程私有的。 多线程共享的运行时数据区需要在Java虚拟机启动时创建好,在Java虚拟机退出时销毁 线程私有的运行时数据区则在创建线程时才创建,线程退出时销毁 java, JVM 阅读更多
HashMap 2021-10-16 2023-04-03 编程语言 / Java 1 小时读完 (大约6709个字)HashMap一、定义123public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {} 二、实现2.1 数据结构HashMap 的底层数据存储结构是“数组 + 链表 + 红黑树”,红黑树结构是 JDK8 之后进行的优化。 java, 集合, 源码 阅读更多