摘要: 一、线程状态 线程是 cpu 任务调度的最小执行单位,每个线程拥有自己独立的程序计数器、虚拟机栈、本地方法栈。线程状态包括:创建、就绪、运行、阻塞、死亡。 二、线程状态切换 三、阻塞唤醒过程 阻塞 以下三个方法的调用都会使当前线程阻塞,该线程将会被放置到对该 Object 的请求等待队列中,然后让出 阅读全文
posted @ 2024-11-15 14:41 CodeWhisperer001 阅读(13) 评论(0) 推荐(0) 编辑
摘要: Java线程控制方法的作用及其区别: start: 作用:启动线程,由虚拟机自动调度执行run()方法。 区别:线程处于就绪状态。 run: 作用:线程逻辑代码块处理,JVM调度执行。 区别:线程处于运行状态。 sleep: 作用:让当前正在执行的线程休眠(暂停执行)。 区别:不释放锁。 wait: 阅读全文
posted @ 2024-11-15 13:55 CodeWhisperer001 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 重载 概念: 重载是在同一个类中,有多个同名的方法,但参数类型、数量或顺序不同。 目的: 提供多种方式调用同一名称的方法,以适应不同的场景。 应用: 当需要以统一的方式来处理不同类型的数据时,可以用重载。 重写 概念: 重写发生在继承关系中,子类重新定义父类的方法。 目的: 子类可以根据自己的需求, 阅读全文
posted @ 2024-11-13 10:17 CodeWhisperer001 阅读(9) 评论(0) 推荐(0) 编辑
摘要: ThreadLocal是线程本地存储,在每个线程中都创建了一个ThreadLocalMap对象,每个线程可以访问自己内部ThreadLocal对象内的value。 ThreadLocal有以下几种典型应用场景: 1.数据库连接管理:在多线程环境下,为每个线程分配独立的数据库连接,避免了连接被其他线程 阅读全文
posted @ 2024-11-12 14:55 CodeWhisperer001 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 有时需要复制一个对象,并且希望保留原有的对象进行接下来的操作。这时就需要使用克隆。 如何实现对象克隆? 实现Cloneable接口并重写clone方法: 实现​​Cloneable​​接口后,可以调用​​Object.clone()​​方法来创建一个新的对象。 通过序列化和反序列化实现深克隆: 将对 阅读全文
posted @ 2024-11-12 14:34 CodeWhisperer001 阅读(3) 评论(0) 推荐(0) 编辑
摘要: Java中常见创建线程池的几种方法。 1. 使用 ​​Executors​​ 工具类创建线程池 ​​newFixedThreadPool(int nThreads)​​ 特点:创建一个固定大小的线程池,线程池中的线程数始终保持不变。 适用场景:适用于任务量已知且相对固定的场景,可以有效控制资源的使用 阅读全文
posted @ 2024-11-12 11:57 CodeWhisperer001 阅读(113) 评论(0) 推荐(0) 编辑
摘要: JVM(Java Virtual Machine,Java虚拟机): -JVM是Java程序的运行平台,它是一种抽象化的计算机,可以将编译后的Java字节码(.class文件)转换为特定操作系统能够执行的机器码。 它负责管理内存分配、垃圾回收、线程管理等底层服务,使得Java具有“一次编写,到处运行 阅读全文
posted @ 2024-11-12 11:15 CodeWhisperer001 阅读(3) 评论(0) 推荐(0) 编辑
摘要: ​​ConcurrentHashMap​​​是Java中一种线程安全且高效的哈希表实现,它在Java 8之后的版本中采用了与早期版本不同的扩容机制。在Java 8及以后的版本中,​​ConcurrentHashMap​​利用了分段锁(Segment,直到Java 8)和之后的CAS(Compare 阅读全文
posted @ 2024-11-12 11:08 CodeWhisperer001 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 重载(Overloading)和重写(Overriding)是面向对象编程中两个重要的概念,它们在实现多态性时起着关键作用,但两者之间有明显的区别: 定义上的区别: 重载(Overloading) 指的是在同一个类中可以有多个方法名相同,但这些方法的参数列表(参数的个数、类型或顺序)不同,或者是方法 阅读全文
posted @ 2024-11-11 16:29 CodeWhisperer001 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 锁的级别:无锁 => 偏向锁 => 轻量级锁 => 重量级锁 无锁:没有对资源进行锁定,所有线程都可以访问,但是只有一个线程能成功修改资源,其他的线程会不断尝试,直至修改成功。 偏向锁:偏向锁是指当一个线程访问同步块并获取锁时,会在对象头和栈帧中的锁记录里存储线程ID。一旦该线程再次进入同步块,无需 阅读全文
posted @ 2024-11-11 16:09 CodeWhisperer001 阅读(20) 评论(0) 推荐(0) 编辑