Java中线程的生命周期

Java中线程的生命周期

Java系列 2年前 (2022-06-06) 浏览: 247 评论: 0

在本文中,我们将详细讨论Java中的一个核心概念——线程的生命周期。 我们将使用一个快速的图解,当然还有实用的代码片段来更好地理解线程执行期间的这些状态。 Java多线程 在Java语言中,多线程是由线程的核心概念驱动的。线程在其生命周期中会经历各种状态: Java中线程的生命周期 java.lang.Thread类包含一个静态枚举,它定义了它的潜在状态。在任何给定的时间点内,线程只能处于以下状态

Mutability Detector:用于检测Java中可变性的分析工具

Mutability Detector:用于检测Java中可变性的分析工具

Java系列 1年前 (2023-03-08) 浏览: 127 评论: 0

什么是Mutability Detector(可变性检测器)? 可变性检测器设计用于分析Java类,并报告给定类的实例是否是不可变的。它可以用于: 在单元测试中:使用assertImmutable(MyClass.class)这样的断言。你的类实际上是不可变的吗?在你刚刚做出的改变之后呢? 作为FindBugs插件:你用@Immutable注释的那些类,是真的不可变吗? 在运行时:您的API是否需

metaspace元空间的前世今生

metaspace元空间的前世今生

爪哇岛 4年前 (2020-09-07) 浏览: 1271 评论: 0

我们都知道在Java8中用元空间取代了PermGen。 但有几个问题: MetaSpace默认是GC收集的吗? 即使PermGen是通过添加-XX:+CMSClassUnloadingEnabled这样的参数进行GC收集的,那么有什么比PermGen更好的MetaSpace呢? MetaSpace基于本机内存,所以它将java对象保存在磁盘上,而不是VM上? 甚至元空间也会耗尽内存?如果是这样的话

递归算法科普二

递归算法科普二

Java系列 4年前 (2020-10-09) 浏览: 689 评论: 0

递归数据结构(结构递归) 递归在计算机科学中的一个重要应用是定义列表和树等动态数据结构。递归数据结构可以根据运行时需求动态地增长到理论上无限大的大小;相反,静态数组的大小必须在编译时设置。 当以递归的方式定义基础问题或待处理的数据时,递归算法特别适用。 本节中的示例说明了所谓的“结构递归”。这个术语指的是递归过程作用于递归定义的数据。 只要程序员从数据定义中派生模板,函数就采用结构递归。也就是说,

java元空间metaspace内存溢出排查方法总结

java元空间metaspace内存溢出排查方法总结

jvm 4年前 (2020-11-10) 浏览: 13463 评论: 0

这个java.lang.OutOfMemoryError:Metaspace表示为Java类元数据分配的本机内存量已被耗尽。即我们经常遇到的 java metaspace 内存溢出问题。 在Java8和更高版本中,分配给Java类的最大内存量(MaxMetaspaceSize)默认是不受限制的,因此在大多数情况下不需要更改此设置。另一方面,如果您想限制Java类的内存,可以按照如下方式设置: ja

如何防止内存泄露

如何防止内存泄露

jvm 3年前 (2020-12-12) 浏览: 680 评论: 0

在本文中,我们将全面概述Java世界中的内存泄漏,以及防止它们的主要方法。 与许多人的想法相反,用Java编写的应用程序确实会出现内存泄漏问题。不幸的是,大量java程序员认为内存泄漏是C++的一部分,java垃圾收集器完全解决了这个问题。在本文中,我打算说明虽然垃圾收集器工作得很好,但它不能发挥神奇的作用。 内存泄漏的意思正是它的名字所说的:内存泄漏。它可以有两种类型: 内存块:已分配并可供应用

JDK、JRE、JIT、SDK、JVM的区别

JDK、JRE、JIT、SDK、JVM的区别

jvm 3年前 (2021-01-12) 浏览: 572 评论: 0

JDK(Java Development Kit 开发工具包) JDK(java development kit)是JRE(Java运行时环境)的超集,它包含JRE所拥有的一切以及编译器、调试器等开发工具。 JRE(Java运行时环境) JRE(Java运行时环境)提供JVM(Java虚拟机)运行的环境。JRE包含JVM、类库和其他文件,不包括编译器和调试器等开发工具。 这意味着,您可以在JRE中

Java10特性和增强功能

Java10特性和增强功能

Java系列 3年前 (2021-02-12) 浏览: 476 评论: 0

在Java9发布之后,Java10很快就出现了。与以前的版本不同,Java10没有那么多令人兴奋的特性,但是它几乎没有什么重要的更新,这些更新将改变您的编码方式,以及其他未来的Java版本。 JEP 286:局部变量类型推断 Java现在有var样式的声明。它允许您声明局部变量而不指定其类型。变量的类型将从创建的实际对象的类型推断出来。它声称是JDK10中开发人员的唯一真正特性。例如: var s

ActiveMQ与RabbitMQ的区别

ActiveMQ与RabbitMQ的区别

相关技术 3年前 (2021-03-16) 浏览: 5162 评论: 0

ActiveMQ与RabbitMQ的区别 ActiveMQ与RabbitMQ是流行的开源消息代理。消息代理通过将定义的消息共享给各种应用程序来帮助计算机彼此交互,从而支持电信系统。消息代理帮助将发送方消息的格式转换为接收方标准的格式。RabbitMQ是AMQP协议的最佳实现。它执行一个代理体系结构,其中消息在发送到目的地之前在中心节点上排队。ActiveMQ工作在中间地带,使用代理和P2P架构进行

SpringBoot集成Caffeine缓存

SpringBoot集成Caffeine缓存

相关技术 3年前 (2021-04-17) 浏览: 2235 评论: 0

在SpringBoot的这篇文章中,我们将研究如何将SpringBoot与缓存集成。我们将检查springboot自动配置特性,它能够透明地挂接缓存。 Caffeine缓存 Caffeine是一个基于java8的高性能缓存库,提供接近最佳的命中率。它提供了一个非常类似于google guavaapi的内存缓存。如果caffinecachemanager在类路径中找到Caffeine,Spring引

RxJava和java9 FlowAPI的区别

RxJava和java9 FlowAPI的区别

Java系列 3年前 (2021-05-19) 浏览: 318 评论: 0

  JavaFlowAPI是在Java9中作为反应流规范Reactive Stream的实现而引入的。 在本文中,我们将首先研究反应流Reactive Stream。然后,我们将了解它与RxJava和flowapi的关系。 什么是Reactive Stream? Reactive Manifesto引入了Reactive Streams,以指定具有非阻塞背压的异步流处理的标准。 反应流规

使用Spring Boot和Spring Cloud搭建微服务

使用Spring Boot和Spring Cloud搭建微服务

微服务 3年前 (2021-06-20) 浏览: 189 评论: 0

在Java生态系统中,您将发现一些用于构建微服务体系结构的根深蒂固的模式。如果您以前使用过Spring,那么springboot和springcloud应该是一个不错的返校节。 在本教程中,我将向您展示如何使用springboot和springcloud构建javamicroservices体系结构。 使用Spring Cloud 和 Spring Boot创建Java微服务 仓库地址: git

使用Spring和Eureka创建微服务

使用Spring和Eureka创建微服务

微服务 3年前 (2021-07-22) 浏览: 445 评论: 0

在这篇文章中我们将学习如何创建分布式微服务,并使用springboot、Feign和Eureka服务器使这些微服务协同工作。我们将讨论如何使用springboot创建分布式微服务。为此,我们将使用包Spring Cloud NetFlix(https://spring.io/projects/spring-cloud-netflix)。 任何微服务都应该能够定位另一个服务的不同实例,而不必在代码中

基于Spring Boot和Spring Cloud实现Java微服务

基于Spring Boot和Spring Cloud实现Java微服务

微服务 3年前 (2021-08-23) 浏览: 512 评论: 0

在开发微服务体系架构时,Java是一种很好的语言。事实上,我们行业中的一些大牌公司都在使用它。你听说过Netflix、亚马逊或谷歌吗?eBay、Twitter和LinkedIn呢?是的,处理令人难以置信的流量的大公司都在用Java来实现这一点。 在Java中实现微服务体系结构并不适合所有人。因此,通常不需要实现微服务。大多数公司这样做是为了扩大员工规模,而不是系统规模。如果你想扩大你的员工规模,雇

在Java程序中使用lambda表达式和函数编程

在Java程序中使用lambda表达式和函数编程

Java系列 3年前 (2021-09-24) 浏览: 376 评论: 0

在JavaSE8之前,匿名类通常用于将功能传递给方法。这种做法混淆了源代码,使其更难理解。Java8通过引入lambdas消除了这个问题。本教程首先介绍lambda语言功能,然后详细介绍使用lambda表达式和目标类型进行函数式编程。您还将了解lambda如何与作用域、局部变量、this和super关键字以及Java异常交互。 请注意,本文中的代码示例与JDK 12兼容。 Lambdas: A p

用Java代码创建第一个区块链程序

用Java代码创建第一个区块链程序

相关技术 3年前 (2021-10-26) 浏览: 308 评论: 0

我们都看到了比特币和其他加密货币的规模。虽然这种在线货币的波动性是出了名的,但其背后的技术有可能从内到外扰乱每一个行业。因为区块链有着无限的应用范围,它每天都以新的方式出现。 在这篇文章中,我们将探讨区块链背后的体系结构以及分布式账本的工作原理。一旦你亲眼看到,你就会明白为什么那么多开发者将区块链视为一种新常态。我们还将深入学习如何创建自己的(基本)区块链序列和使用工作证明(挖掘)系统的简短教程。

JIT优化之循环展开

JIT优化之循环展开

jvm 2年前 (2022-03-02) 浏览: 751 评论: 0

在本文中,我们将讨论一种自动优化,称为循环展开。JIT编译器使用这种技术使循环(例如Java的for或while循环)执行得更快。 因为我们将在这里深入研究JVM,为了便于演示,您有时会遇到C代码,甚至是一些汇编语言,所以请不要着急! 让我们首先考虑以下一段C代码,它为100万个long分配空间,并用100万个long随机数填充空间: int main(int argv, char** argc)

Java中的StackOverflowError错误

Java中的StackOverflowError错误

Java系列 2年前 (2022-07-11) 浏览: 351 评论: 0

StackOverflowError可能会让Java开发人员感到恼火,因为它是我们可能遇到的最常见的运行时错误之一。 在本文中,我们将通过查看各种代码示例以及如何处理它来了解此错误是如何发生的。 Stack Frames和StackOverflowerError的发生方式 让我们从基础开始。调用方法时,将在调用堆栈上创建新的堆栈帧(stack frame)。该堆栈框架包含被调用方法的参数、其局部变

AREX Agent 技术实现细节分享

AREX Agent 技术实现细节分享

Java系列 9个月前 (08-07) 浏览: 203 评论: 0

原文地址:https://mp.weixin.qq.com/s/ObonOKMFftDCnFMs28ao7A 背景 在携程内部,随着公司业务规模和复杂度不断提高,研发测试团队面临着各种效能困境,尤其是在需要构造大量测试数据、写场景验证、发布频繁的场景下,业务的质量保障更是是重中之重。 为了满足公司持续交付的需求、并有效保障质量,我们基于流量录制回放的概念,在合法合规以及安全的前提下,开发了一款“用

Java开发利器之重试器

Java开发利器之重试器

Java系列 4年前 (2020-02-12) 浏览: 899 评论: 0

在平时开发中经常会遇到需要调用接口和外部服务的场景,但是有些接口服务方不能立即返回数据,而是需要处理一段时间才能返回真实的业务数据,如果没有处理完则直接返回一个中间状态的结果。 业务场景: 代码中存在依赖不稳定的场景,需要使用重试获取预期结果或者尝试重新执行逻辑不立即结束,比如远程接口访问,数据加载访问,数据上传校验等 对于异常需要重试的场景,同时希望把正常逻辑和重试逻辑解耦 对方接口不支持异步回

登录

忘记密码 ?

切换登录

注册