加载中
多线程篇·线程相关知识

一、线程状态 线程是 cpu 任务调度的最小执行单位,每个线程拥有自己独立的程序计数器、虚拟机栈、本地方法栈。 线程状态包括:创建、就绪、运行、阻塞、死亡。 二、线程状态切换 三、阻塞唤...

线程状态切换

Java线程控制方法的作用及其区别: start: 作用:启动线程,由虚拟机自动调度执行run()方法。 区别:线程处于就绪状态。 run: 作用:线程逻辑代码块处理,JVM调度执行。 区别:线程处于运行状...

在 Java 中,什么时候用重载,什么时候用重写

重载 概念: 重载是在同一个类中,有多个同名的方法,但参数类型、数量或顺序不同。 目的: 提供多种方式调用同一名称的方法,以适应不同的场景。 应用: 当需要以统一的方式来处理不同类型的数...

ThreadLocal有哪些应用场景?它底层是如何实现的

ThreadLocal是线程本地存储,在每个线程中都创建了一个ThreadLocalMap对象,每个线程可以访问自己内部ThreadLocal对象内的value。 ThreadLocal有以下几种典型应用场景: 1.数据库连接管理:在...

为什么要使用克隆?如何实现对象克隆?深拷贝和浅拷贝区别是什么

有时需要复制一个对象,并且希望保留原有的对象进行接下来的操作。这时就需要使用克隆。 如何实现对象克隆? 实现Cloneable接口并重写clone方法: 实现Cloneable接口后,可以调用Object.clon...

创建线程池有哪几种方式

Java中常见创建线程池的几种方法。 1. 使用 Executors 工具类创建线程池 newFixedThreadPool(int nThreads) 特点:创建一个固定大小的线程池,线程池中的线程数始终保持不变。 适用场景:适用...

JDK、JRE、JVM之间的区别

JVM(Java Virtual Machine,Java虚拟机): -JVM是Java程序的运行平台,它是一种抽象化的计算机,可以将编译后的Java字节码(.class文件)转换为特定操作系统能够执行的机器码。 它负责管理内...

谈谈ConcurrentHashMap的扩容机制

ConcurrentHashMap是Java中一种线程安全且高效的哈希表实现,它在Java 8之后的版本中采用了与早期版本不同的扩容机制。在Java 8及以后的版本中,ConcurrentHashMap利用了分段锁(Segment,直...

重载和重写的区别

重载(Overloading)和重写(Overriding)是面向对象编程中两个重要的概念,它们在实现多态性时起着关键作用,但两者之间有明显的区别: 定义上的区别: 重载(Overloading) 指的是在同一个类...

多线程锁的升级原理是什么

锁的级别:无锁 => 偏向锁 => 轻量级锁 => 重量级锁 无锁:没有对资源进行锁定,所有线程都可以访问,但是只有一个线程能成功修改资源,其他的线程会不断尝试,直至修改成功。 偏向锁:偏向锁...

11/11 16:08
45
创建线程有哪几种方式

1. 继承 Thread 类 优点: 简单直观,适合初学者。 直接继承 Thread 类,可以方便地访问和使用 Thread 类的方法。 缺点: Java 不支持多继承,因此如果你的类已经继承了其他类,则不能继承 ...

线程池都有哪些状态

线程池有五种典型状态: 1.RUNNING(运行状态):在这个状态下,线程池可以接收新的任务提交,并且能够处理已添加到任务队列中的任务。这是线程池的初始状态,也是最活跃的状态。这是最正常的...

hashCode()与equals()之间的关系

在Java中,`hashCode()`和`equals()`方法之间存在紧密的关系,主要体现在它们共同作用于对象的比较和存储上,尤其是在集合(如HashSet、HashMap)和哈希表的实现中。 1.hashCode()和equals(...

泛型中extends和super的区别

泛型中的 extends 和 super 关键字用于设置类型参数的上下界,控制可以传递给泛型类型的参数类型。它们的区别在于限制的方向和用途: 1.extends: 上界限制: 使用 extends 关键字定义了一个类...

String、StringBuffer、StringBuilder的区别

在Java中,String、StringBuffer、和StringBuilder都是用于处理字符串的类,但它们之间存在一些关键差异,主要涉及可变性、线程安全性和性能: 1.String: -不可变性:String对象一旦被创建,其...

==和equals方法的区别

在Java中,== 和 equals 方法用于比较对象,但它们之间存在本质的区别: == 操作符 基本数据类型: == 比较的是值是否相等。 int a = 10; int b = 10; System.out.println(a == b); // 输出 ...

理解乐观锁和悲观锁

乐观锁:认为每次去拿数据的时候别人不会修改,所以不会上锁,但是每次要拿数据的时候都会先判断数据是否被别人修改 悲观锁:认为每次去拿数据的时候别人都会修改,所以每次都会上锁。 使用场...

常用的 jvm 调优的参数都有哪些

堆内存设置 -Xms:设置JVM堆的初始大小。 例如:-Xms2g 表示初始堆大小为2GB。 -Xmx:设置JVM堆的最大大小。 例如:-Xmx2g 表示最大堆大小为2GB。 -XX:NewRatio:设置年轻代和老年代的比例。...

java 中都有哪些引用类型

强引用(Strong Reference): Java中默认声明的就是强引用,例如:Object obj = new Object(); 只要强引用存在,垃圾回收器将永远不会回收被引用的对象 ,哪怕内存不足时,JVM也会直接抛出O...

类加载的执行过程

类加载的执行过程是Java虚拟机(JVM)将类文件从磁盘加载到内存,并进行验证、准备、解析和初始化等一系列操作的过程。这个过程可以分为以下几个阶段: 1. 加载 根据查找路径找到相应的 clas...

没有更多内容

加载失败,请刷新页面

返回顶部
顶部