JUC之volatite关键字 在之前对单例模式的介绍中,我提到了volatite,在那篇文章中,我们使用volatite是为了保证线程安全,那么volatite是否能够完全保证线程安全呢? 首先,线程安全需要考虑以下三个方面: 可见性:一个线程对共享变量进行修改,另一个线程能看到最新结果 有序性:一个线程内代码按编写顺序执行 原子性:一个线程内多行代码以一个整体运行,期间不能有其他线程的代码插队 直接说结论,volatit 2025-04-08 学习笔记 #Java #JUC
JUC之Lock vs synchronized Lock和synchronized都能实现锁的功能,但是两者之间有着区别。 语法层面 synchronized是关键字,源码位于jvm,用cpp实现。 Lock是接口,源码由jdk提供,用Java语言实现。 使用synchronized时,退出同步代码块时,锁会自动释放;而使用Lock时,需要我们手动调用unlock方法释放锁。 功能层面 两者都是悲观锁,都具备基本的互斥、同步、锁重入功能。 L 2025-03-30 学习笔记 #Java #JUC
JUC之sleep vs wait 在JUC之线程状态这篇博客中,我提到了除了调用锁对象的wait(long)会让线程进入有时限等待外,还可以通过调用sleep(long)方法,来进入有时限等待状态。在这篇博客中,我就讲讲两者的对比。 共同点 wait()、wait(long)和sleep(long)的效果都是让当前线程暂时放弃CPU的使用权,进入阻塞状态。 三者都可以被打断唤醒。 不同点方法归属不同 sleep(long)是Th 2025-03-30 学习笔记 #Java #JUC
JUC之线程池 线程池本质上就是管理一组线程,用来完成提交给线程池的任务。提交任务,可以调用线程池的submit方法,把实现了Runnable和Callable的任务对象,提交给线程池;而线程池就可以创建出线程对象来执行任务。 创建的线程分为两类:核心线程和救急线程。核心线程就是,当线程执行完任务之后,依然要保留到线程池中的线程;而救急线程,则是执行完任务之后,如果没有别的任务了,就不需要保留到线程池中的线程。两 2025-03-29 学习笔记 #Java #JUC
JUC之线程状态 线程有哪些状态(六种状态)Java中的线程分为6种状态,分别是NEW(新建)、RUNNABLE(可运行)、TERMINATED(终结)、BLOCKED(阻塞)、WAITING(等待)、TIMED_WAITING(有时限等待)。 当使用new关键字创建了一个线程对象之后,刚刚创建出来的线程对象,就处于新建状态。新建状态下的线程,仅仅是一个Java对象,没有和操作系统底层真正的线程关联起来,这时的线程 2025-03-29 学习笔记 #Java #JUC
Java单例模式 方式一:饿汉式介绍所谓饿汉式单例模式,就是在第一次获取单例对象之前(而不是获取时),就创建好了这个对象,比如下图的代码: 123456789101112131415public class Singtelon1 { private static final Singtelon1 INSTANCE = new Singtelon1(); private Singtelo 2025-02-23 学习笔记 #Java #设计模式
Git基础教程 为什么要学习Git在软件工程中,需要对整个团队的代码和文档(项目成果)进行统一的管理,这就需要软件配置管理了。软件配置管理(SCM)是指通过执行版本控制、变更控制的规程,以及使用合适的配置管理软件,来保证所有配置项的完整性和可跟踪性。配置管理是对工作成果的一种有效保护。而Git就是一种软件配置管理软件。 相比于别的软件配置管理软件(如VSS、CVS、Subversion等),Git作为开源的分布式 2025-01-31 学习笔记 #Git
参与项目汇总 C++程序设计范式课程项目项目简介:程序设计范式的期末项目,用C++和UE5而制作的原创游戏Mana-Tower,十分有趣。 项目链接:IcySugar000/Mana-Tower: Mana Tower, Mana Power! (github.com) Java专业实习(恒生电子训练营)课程项目项目简介:恒生电子训练营的项目,后端使用Spring Boot和Mybatis,但可惜前端 2025-01-28 参与项目 #项目经历
Shell基础编程学习 Shell 变量定义变量时,变量名不加美元符号,变量名和等号之间不能有空格 1your_name="b907" 变量名的命名须遵循如下规则: 只包含数字、字母和下划线 不能以数字开头 避免使用Shell关键字 使用大写字母表示常量 避免使用空格 12345678910111213141516FLOWER="www.flowertea.site"LD_L 2024-12-16 学习笔记 #Shell
Linux 常用命令 几个常用命令 命令 对应英文 作用 ls list 查看当前目录下的内容 pwd print work directory 查看当前所在目录 cd [目录名] change directory 切换目录 touch [文件名] touch 如果文件不存在,新建文件 mkdir [目录名] make directory 创建目录 rm [文件名] remove 删除指定 2024-11-06 学习笔记 #Linux