自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 零基础掌握Java多线程(六):Java的线程安全

如果多线程环境下,代码达到预期结果(如没有出现数据错误、丢失更新等问题),即该线程不论是一个还是在多线程环境下,则可视为线程安全。小明和一群人(多线程)分工计算很多题,最后得到的结果和小明自己(单线程)算结果一致,就是正确的。线程指的是可能会产生。死锁可以视作是线程不安全中的一种特定极端情况。

2025-11-11 17:56:52 711

原创 零基础掌握Java多线程(五):死锁

本文介绍了死锁的定义及其四个必要条件:互斥、持有且等待、不可强占和循环等待。通过三个典型场景(单线程重复加锁、两线程交叉争锁、N线程环形争锁)分析了死锁产生的过程,并提供了Java代码示例说明两线程死锁情况。文章还重点讲解了可重入锁(ReentrantLock)机制,包括synchronized实现可重入性的锁计数器和线程ID检查原理,以及如何手动实现可重入锁。最后对比了synchronized的隐式可重入性与ReentrantLock的显式管理方式,强调可重入锁对避免死锁的重要作用。

2025-10-16 19:00:00 1016

原创 零基础掌握Java多线程(四):线程同步和锁机制

在Java中,使用synchronized关键字可以synchronized的核心作用就是确保​​​​能够执行被它修饰的代码(方法或代码块),其他线程必须等待当前线程释放锁后才能继续执行。synchronized的一个房间(共享资源)的只允许拿着钥匙进入,等到这个人办完事才会交给下一个人。保证了相互做的事不会被干扰,即线程安全。

2025-10-14 19:00:00 1580

原创 零基础掌握Java多线程(三):控制线程状态的关键方法

本文总结了Java多线程编程中的核心概念和关键方法。主要内容包括:1.线程创建两种方式:继承Thread类或实现Runnable接口,推荐后者;2.线程控制方法:start()启动线程,sleep()暂停线程,yield()让出CPU,join()等待线程结束;3.线程协作机制:wait()/notify()实现线程间通信,需配合synchronized使用;4.线程中断机制:通过interrupt()设置中断标志,线程需自行检查处理。文章通过代码示例详细演示了各方法的使用场景和注意事项,强调多线程编程中的

2025-10-02 19:00:00 792

原创 零基础掌握Java多线程(二):Thread核心属性

本文介绍了Java线程的核心属性和基本状态管理。主要内容包括:1.线程ID的获取方法;2.线程六种生命周期状态(新建、可运行、阻塞、等待、超时等待、终止)及其转换条件;3.线程命名与名称获取;4.判断线程存活状态的方法;5.线程优先级的设置与获取(1-10范围);6.前后台线程(守护线程)的设置与作用差异;7.线程中断机制的工作原理及不同状态下的中断行为。文章通过代码示例展示了这些特性的具体使用方法,并强调线程调度优先级仅作为建议,实际执行顺序受操作系统影响。

2025-09-13 19:00:00 549

原创 零基础掌握Java多线程(一):进程与线程、线程的创建

通过重写run()方法实现线程的具体逻辑。run()方法是线程的执行体,是线程的核心。定义了线程启动后要执行的任务内容。可以通过继承Thread类并重写run()方法,或实现Runnable接口的run()方法来实现。Runnable接口是重写run(),Callable接口是重写call()。

2025-09-09 19:00:00 973

原创 C/C++ 转 Java 的数据结构初阶对比指南

【1】装箱/装包:把基本数据类型变为包装类型。Java 中的基本数据类型(如 int、double 等)是原始类型,而包装类型(如 Integer、Double 等)是类。例如: Integer i = Integer.valueOf(i); //显示装箱,通过包装类的静态方法 valueOf() 转换 Integer n = 2025; //自动装箱 ,编译器自动调用 Integer.valueOf() 方法【2】拆箱/拆包:把包装

2025-07-26 19:00:00 1274

原创 面向对象C++转Java

Java和C++在面向对象编程上存在显著差异:Java采用自动垃圾回收机制,所有对象都在堆上创建,无需手动释放内存;继承仅支持单继承但可通过接口实现多继承,且必须显式调用父类构造方法;多态默认支持,无需virtual关键字;权限控制默认包级访问;不支持运算符重载(除字符串+操作),改用方法实现类似功能。这些设计使Java更易用但牺牲了部分灵活性。开发者需注意字符串比较用equals()、常量用final修饰等编码习惯差异。

2025-07-15 19:00:00 1954

原创 C转JAVA语法极简教程

本文介绍了Java编程基础要点,主要包括:1. Java程序创建规则:类与文件名一致、main方法规范;2. 输入输出操作:Scanner类的使用、数据类型读取方法;3. 数据类型及转换:8种基本类型、初始化要求、类型提升规则;4. 运算符与逻辑控制:算术/逻辑/位运算符、条件/循环语句;5. 方法定义与数组:方法重载特性、一维/二维数组的声明和遍历。文章还对比了Java与C语言在语法上的主要差异,如变量初始化、数据类型范围、字符串处理等方面。

2025-07-10 19:00:00 943

原创 C语言笔记自用

/定义NUM为100#undef NUM;//取消宏定义//重新定义NUM,定义NUM为101。

2025-05-19 18:32:53 588 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除