- 对共享变量加锁虽然能够保证线程的安全,但是却增加了开发人员对锁的使用技能,如果锁使用不当,则会导致死锁的问题。而ThreadLocal能够做到在创建变量后,每个线程对变量访问时访问的是线程自己的本地变量。 对共享变量加锁虽然能够保证线程的安全,但是却增加了开发人员对锁的使用技能,如果锁使用不当,则会导致死锁的问题。而ThreadLocal能够做到在创建变量后,每个线程对变量访问时访问的是线程自己的本地变量。
- 其实,源码是原理落地的最直接体现,看懂源码对于深刻理解原理有着很大的帮助。但是不少小伙伴看源码时,总觉得源码太枯燥了,看不懂。那今天,我们就一起花10分钟手撸一个极简版的Java线程池,让小伙伴们更好的理解线程池的核心原理。 其实,源码是原理落地的最直接体现,看懂源码对于深刻理解原理有着很大的帮助。但是不少小伙伴看源码时,总觉得源码太枯燥了,看不懂。那今天,我们就一起花10分钟手撸一个极简版的Java线程池,让小伙伴们更好的理解线程池的核心原理。
- 理解线程的生命周期本质上理解了生命周期中各个节点的状态转换机制就可以了。接下来,我们分别就 **通用线程生命周期和Java语言的线程生命周期** 分别进行详细说明。 理解线程的生命周期本质上理解了生命周期中各个节点的状态转换机制就可以了。接下来,我们分别就 **通用线程生命周期和Java语言的线程生命周期** 分别进行详细说明。
- 最近冰河不是又出版了一本《深入理解高并发编程:核心原理与案例实战》一书吗?很多小伙伴对于Java的内存模型还是不太了解,今天,我就用最简短的篇幅结合八种操作和同步规则给大家介绍下到底什么是Java的内存模型。 最近冰河不是又出版了一本《深入理解高并发编程:核心原理与案例实战》一书吗?很多小伙伴对于Java的内存模型还是不太了解,今天,我就用最简短的篇幅结合八种操作和同步规则给大家介绍下到底什么是Java的内存模型。
- 在开发高并发系统时,有很多手段可以保护系统,如:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统处理能力。降级是当服务出问题或影响到核心流程的性能,需要暂时屏蔽掉,待高峰过去或者问题解决后再打开。有些场景不适合用缓存或降级,比如稀缺资源(秒杀、抢购)、写服务(评论、下单)、频繁的复杂查询(评论的最后几页)等,这些场景可以用限流限制并发/请求量。 在开发高并发系统时,有很多手段可以保护系统,如:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统处理能力。降级是当服务出问题或影响到核心流程的性能,需要暂时屏蔽掉,待高峰过去或者问题解决后再打开。有些场景不适合用缓存或降级,比如稀缺资源(秒杀、抢购)、写服务(评论、下单)、频繁的复杂查询(评论的最后几页)等,这些场景可以用限流限制并发/请求量。
- 一、前言SPFA算法,全称为Shortest Path Faster Algorithm,是求解单源最短路径问题的一种常用算法,它可以处理有向图或者无向图,边权可以是正数、负数,但是不能有负环。 二、SPFA 算法 1、SPFA算法的基本流程1. 初始化首先我们需要起点s到其他顶点的距离初始化为一个很大的值(比如9999999,像是 JAVA 中可以设置 Integer.MAX_VALU... 一、前言SPFA算法,全称为Shortest Path Faster Algorithm,是求解单源最短路径问题的一种常用算法,它可以处理有向图或者无向图,边权可以是正数、负数,但是不能有负环。 二、SPFA 算法 1、SPFA算法的基本流程1. 初始化首先我们需要起点s到其他顶点的距离初始化为一个很大的值(比如9999999,像是 JAVA 中可以设置 Integer.MAX_VALU...
- 在 Java 中,null 是一个非常常见的关键字,用于表示“没有值”或“空”。然而,对于初学者来说,null 的本质可能会感到有些困惑。在本文中,我们将详细探讨 null 在 Java 中的含义和使用。 null 的定义在 Java 中,null 表示“没有值”或“空”。它是一个关键字,用于表示一个对象变量不引用任何对象。这意味着该变量没有指向任何有效的内存地址,因此它不指向任何对象。如果... 在 Java 中,null 是一个非常常见的关键字,用于表示“没有值”或“空”。然而,对于初学者来说,null 的本质可能会感到有些困惑。在本文中,我们将详细探讨 null 在 Java 中的含义和使用。 null 的定义在 Java 中,null 表示“没有值”或“空”。它是一个关键字,用于表示一个对象变量不引用任何对象。这意味着该变量没有指向任何有效的内存地址,因此它不指向任何对象。如果...
- 前置知识:synchronized 在JavaSE1.6以前,synchronized都被称为重量级锁。但是在JavaSE1.6的时候,对synchronized进行了优化,引入了偏向锁和轻量级锁,以及锁的存储结构和升级过程,减少了获取锁和释放锁的性能消耗,有些情况下它也就不那么重了。在同步方法中,使用了flag标记ACC_SYNCHRONIZED,当调用方法时,调用指令会检查方法的AC... 前置知识:synchronized 在JavaSE1.6以前,synchronized都被称为重量级锁。但是在JavaSE1.6的时候,对synchronized进行了优化,引入了偏向锁和轻量级锁,以及锁的存储结构和升级过程,减少了获取锁和释放锁的性能消耗,有些情况下它也就不那么重了。在同步方法中,使用了flag标记ACC_SYNCHRONIZED,当调用方法时,调用指令会检查方法的AC...
- 打印设置的XX选项及值程序运行时JVM默认设置或用户手动设置的XX选项-XX:+PrintCommandLineFlags 打印所有XX选项的默认值-XX:+PrintFlagsInitial打印所有XX选项的实际值-XX:+PrintFlagsFinal打印JVM的参数-XX:+PrintVMOptions 堆、栈、方法区等内存大小设置栈-Xss128k <==> -XX:Thread... 打印设置的XX选项及值程序运行时JVM默认设置或用户手动设置的XX选项-XX:+PrintCommandLineFlags 打印所有XX选项的默认值-XX:+PrintFlagsInitial打印所有XX选项的实际值-XX:+PrintFlagsFinal打印JVM的参数-XX:+PrintVMOptions 堆、栈、方法区等内存大小设置栈-Xss128k <==> -XX:Thread...
- 模式引进问题克隆羊问题:现在有一只羊 tom,姓名为: tom, 年龄为:1,请编写程序创建和 tom 羊 属性完全相同的 10只羊。传统方式解决克隆羊问题编辑class Sheep{ private String name; private int age; public Sheep(String name, int age) { this.name ... 模式引进问题克隆羊问题:现在有一只羊 tom,姓名为: tom, 年龄为:1,请编写程序创建和 tom 羊 属性完全相同的 10只羊。传统方式解决克隆羊问题编辑class Sheep{ private String name; private int age; public Sheep(String name, int age) { this.name ...
- 在 Java 中,异常(Exception)指的是一种程序运行过程中出现的意外情况,这些意外情况可能是由于程序的逻辑错误、输入错误或系统错误等引起的。Java 通过提供异常机制来处理这些意外情况,从而使程序更加健壮和可靠。 异常的类型Java 中的异常分为两类:受检异常(Checked Exception)和非受检异常(Unchecked Exception)。其中,受检异常在编译时就必须被... 在 Java 中,异常(Exception)指的是一种程序运行过程中出现的意外情况,这些意外情况可能是由于程序的逻辑错误、输入错误或系统错误等引起的。Java 通过提供异常机制来处理这些意外情况,从而使程序更加健壮和可靠。 异常的类型Java 中的异常分为两类:受检异常(Checked Exception)和非受检异常(Unchecked Exception)。其中,受检异常在编译时就必须被...
- 接入DataArts Studio需要进行以下步骤:1. 创建和配置 DataArts Studio 实例:在 ModelArts 控制台创建 DataArts Studio 实例,并进行配置和参数设置。2. 准备数据:在 DataArts Studio 中使用数据源管理工具,连接数据源并将数据准备好。3. 创建数据治理任务:在 DataArts Studio 中创建数据治理任务,并设置任务... 接入DataArts Studio需要进行以下步骤:1. 创建和配置 DataArts Studio 实例:在 ModelArts 控制台创建 DataArts Studio 实例,并进行配置和参数设置。2. 准备数据:在 DataArts Studio 中使用数据源管理工具,连接数据源并将数据准备好。3. 创建数据治理任务:在 DataArts Studio 中创建数据治理任务,并设置任务...
- 接入区块链服务 BCS 可以通过以下步骤完成:1. 注册华为云账号并开通 BCS 服务。2. 创建一个区块链服务。3. 部署智能合约并获取合约地址。4. 通过 BCS 提供的 API 或 SDK 调用智能合约,与区块链进行交互。下面是使用 Java SDK 接入 BCS 的示例代码,实现向区块链写入数据:import com.huawei.bcs.vp.bc.fabric.client.Fa... 接入区块链服务 BCS 可以通过以下步骤完成:1. 注册华为云账号并开通 BCS 服务。2. 创建一个区块链服务。3. 部署智能合约并获取合约地址。4. 通过 BCS 提供的 API 或 SDK 调用智能合约,与区块链进行交互。下面是使用 Java SDK 接入 BCS 的示例代码,实现向区块链写入数据:import com.huawei.bcs.vp.bc.fabric.client.Fa...
- 目录为什么要有泛型生活场景泛型:标签举例:中药店,每个抽屉外面贴着标签超市购物架上很多瓶子,每个瓶子装的是什么,有标签泛型的设计背景集合容器类在设计阶段/声明阶段不能确定这个容器到底实际存的是什么类型的对象,所以在JDK1.5之前只能把元素类型设计为Object,JDK1.5之后使用泛型来解决。因为这个时候除了元素的类型不确定,其他的部分是确定的,例如关于这个元素如何保存,如何管理等是确... 目录为什么要有泛型生活场景泛型:标签举例:中药店,每个抽屉外面贴着标签超市购物架上很多瓶子,每个瓶子装的是什么,有标签泛型的设计背景集合容器类在设计阶段/声明阶段不能确定这个容器到底实际存的是什么类型的对象,所以在JDK1.5之前只能把元素类型设计为Object,JDK1.5之后使用泛型来解决。因为这个时候除了元素的类型不确定,其他的部分是确定的,例如关于这个元素如何保存,如何管理等是确...
- JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,它可以用来存储和传输结构化的数据。在 Java 中,有多种方法可以将 JSON 文件读取为字符串,本文将介绍其中的几种。 方法一:使用 java.io 包中的类java.io 包中提供了一些类,如 FileReader、BufferedReader、InputStreamReader 等,可以用来... JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,它可以用来存储和传输结构化的数据。在 Java 中,有多种方法可以将 JSON 文件读取为字符串,本文将介绍其中的几种。 方法一:使用 java.io 包中的类java.io 包中提供了一些类,如 FileReader、BufferedReader、InputStreamReader 等,可以用来...
上滑加载中
推荐直播
-
华为云码道 × 仓颉编程:工程化AI编码探索2026/05/27 周三 19:00-21:00
刘俊杰-华为云仓颉语言专家/李炎-华为云码道技术专家/王智鹏-OpenCangjie开源社区发起人
本场直播围绕华为云仓颉语言与华为云码道的深度结合,展示华为云智能编程从零基础到高效落地的完整生态能力。以华为云码道为引擎,仓颉语言为载体,带给大家日常提效、趣味创新到极速量产的开发体验。
回顾中 -
一个AI团队帮你写代码:华为云码道Agent Space实战2026/06/25 周四 19:00-21:00
张翰文-华为云码道工程师/郭英旭-青软创新科技集团股份有限公司 软件架构师
本场直播聚焦华为云码道Agent Space两大模式:研发办公、代码开发,亲身体验从需求到代码的AI自动化能力。实操演示基于华为 CodeArts CLI,依托 OpenSpec 规格体系从零搭建业务项目。
回顾中
热门标签