- 博客(18)
- 收藏
- 关注
原创 线程安全问题的原因和解决办法
但t1.load->t2.load->t1.add->t1.save->t2.add->t2.save,不符合(储存在t1和t2的寄存器内的值都会是count+1,而不是count+2)线程安全是指当多个线程同时访问一个对象时,无论这些线程如何交替执行,也不需要额外的同步操作,这个对象都能表现出正确的行为,即符合预期,反之,不符合预期,就是出现了bug,就说明存在线程安全问题。如果指令重排序,出现了先执行了1,再执行了3,再执行了2,那么instance就指向了未初始化的对象,就会出错。
2025-10-12 15:34:34
724
原创 线程状态(各状态的具体含义与状态之间的切换条件)
调用 Object.wait(long timeout) 方法(指定超时时间)。调用 Thread.join(long millis) 方法(指定超时时间)。当线程对象被创建但尚未调用 start() 方法时,线程处于新建状态。处于此状态的线程不会被分配 CPU 时间片,需要等待其他线程显式唤醒。仅当其他线程释放锁且当前线程获得锁后,才会从阻塞状态恢复到就绪状态。其他线程调用 Object.notifyAll() 方法。其他线程调用 Object.notifyAll() 方法。
2025-10-11 10:52:36
249
原创 Thread 类的基本用法(包括线程创建,线程中断,线程等待,获取线程实例与线程状态)
4.创建子类,实现runnable接口,重写run,搭配thread的实例,但通过匿名内部类进行了简写。2.创建子类,实现runnable接口,重写run,搭配thread的实例。3.创建子类,继承thread,重写run,但通过匿名内部类进行了简写。其中第五种基于lambda表达式创建线程最简洁也最常用。1.创建子类,继承thread,重写run。5.基于lambda表达式创建线程。
2025-10-10 23:50:38
304
原创 进程与线程的区别与联系
进程:通信需要通过进程间通信(IPC)机制,如管道、消息队列、共享内存等,Java 中可通过socket、RMI等实现。当我们创建新线程时,这些线程都属于该进程。线程:共享所属进程的资源,仅拥有少量私有资源(如栈、程序计数器),资源占用量小。线程:依赖性强,同一进程中的线程共享资源,一个线程崩溃可能导致整个进程崩溃。生命周期:线程的生命周期依赖于进程,当进程结束时,其所有线程也会终止。包含关系:线程是进程的一部分,一个进程至少包含一个线程(主线程)资源关系:线程共享进程的资源,进程是线程的资源容器。
2025-10-10 20:23:58
336
原创 HashMap(手动实现)与Set(Java
Set接口及其实现类HashSet和Map接口及其实现类HashMap是Java中常用的集合类。HashSet基于HashMap实现,具有元素唯一性、允许null值、无序性和非线程安全等特点。Map接口的HashMap实现基于哈希表,允许null键值,非线程安全且无序。文章还展示了如何使用Set和Map进行基本操作,如添加、删除和遍历元素。此外,文章提供了一个简化版的HashMap实现,展示了如何手动实现哈希表的基本功能,包括哈希冲突处理、扩容策略和基本操作。通过这些内容,读者可以更好地理解Java集合框架
2025-05-10 21:08:12
219
原创 排序(快速排序(包含栈实现),归并排序(包含非递归版本),堆排序,插入排序,希尔排序,选择排序)
快速排序,归并排序(包含非递归版本),堆排序,插入排序,希尔排序,选择排序Java.动画演示
2025-04-20 20:20:39
185
原创 根据前序与中序遍历构造二叉树(Java)
如果是后序和中序构造二叉树,可以将后序遍历结果逆置,即从左右根变为根右左,是前序的镜像,此时只要更换递归左右子树的前后顺序即可。
2025-04-06 23:25:03
249
原创 判断是否是有效的出栈顺序(java)
2.当pushArr[i]不等于popArr[j]时,pushArr[i]入栈,i向后移动一位,直到pushArr[i]等于popArr[j],3.当pushArr[i]等于popArr[j]时,该相同元素出栈,i和j同时向后移动一位,如此循环,给定两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的一个可能的弹出顺序。4.直到i和j指向的位置都到达数组末尾,若此时栈为空,说明popArr是有效的。1.对两个数组创建两个指引i和j,i指向pushArr,j指向popArr,
2025-03-30 22:44:14
145
原创 二叉树的层序遍历以及判断是否是完全二叉树(java)
首先,完全二叉树的定义:完全二叉树是指除了最后一层外,其他各层的节点数都达到最大个数,且最后一层的节点都集中在最左边的二叉树。只需要记住一句话,每当一个节点出队,就把它的左右子节点(非空)入队;层序遍历就是依各层从上到下,依各节点从左到右依次遍历。这里我们以两个阶段来判断是否是完全二叉树。3.如果只有右子树,则判断为false。层序遍历的应用:判断是否是完全二叉树。2.如果只有左子树,也进入二阶段。1.如果没有子树,则进入二阶段。一.要求每个节点必须有两个子树。二.要求每个节点必须没有子树。
2025-03-30 20:57:36
273
原创 判断出栈顺序是否合理(Java)
3.当pushArr[i]不等于popArr[j]时,pushArr[i]入栈,i向后移动一位,直到pushArr[i]等于popArr[j],4.当pushArr[i]等于popArr[j]时,该相同元素出栈,i和j同时向后移动一位,如此循环,5.直到i和j指向的位置都到达数组末尾,若此时栈为空,说明popArr是有效的。2. i指向pushArr,j指向popArr,1.对两个数组创建两个指引i和j,
2025-03-23 21:19:25
180
原创 栈和队列(java)
继承自Collection的方法包括:add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray.Queue独有的方法包括:offer, poll, peek, element, remove(虽然Collection也有remove,但Queue的remove用于移除并返回队列头部元素).
2025-03-23 20:46:18
274
原创 简易的图书管理系统(Java)
这里我们定义一个IOperation(接口)类型的数组operations,用于存储用户可以进行的具体操作,通过接口对各个操作进行统一处理.最后通过work方法实现对书的具体操作.写用户的代码实现之前我们除了考虑通过一个父类用户统一管理各个用户,还需要考虑用户如何对书进行操作。咱先不写代码,先分析一下一个图书管理系统最先需要的是什么?对书的具体操作我们以删除书籍为例,其他具体操作就不展示了。2.这是父类用户(User_father)3.子类1 NormalUser。并罗列出相关信息,大致如这样。
2025-03-09 09:30:02
181
原创 继承(Java)
public void bark() {//出现同名的情况,可以通过super.name调用父类属性(super也不能调用静态属性)//如果子类与父类有同名属性,则子类属性会覆盖父类属性(就近原则)public String getName(){//需要public创建方法,才能被子类继承(授权访问)//当子类构造方法没有参数时,可以不调用父类构造方法,否则必须手动调用父类构造方法。特别:如果子类调用的只是父类中的一般方法,则不会对父类的方法进行调用。// 隐式调用父类的无参构造方法 super();
2025-02-22 14:49:15
327
原创 从“零“开始学习链表1
描述:从键盘输入一个长度为n的数组,问你能否用这个数组组。成一个链表,并顺序输出链表每个节点的值。第一行输入一个正整数n,表示数组的长度。若有错误或不合理的部分欢迎读者指正。制作一个链表然后输出这个链表的值。链表的输出类似,由读者自行思考。需具备知识->结构体与指针;输出:5 4 2 1。
2024-12-18 23:26:26
206
原创 关于最近Java与c语言的学习(附加代码 统计任一整数中某个位数出现的次数)
大一很忙,网课脱了几节,一直在调和,挤时间出来上网课.(虽然一直在赶在焦虑,但也变相的提升了我的时间管理能力与学习态度吧)学习节奏与兴趣都起来了,还是对自己以后比较有信心的(虽然身旁总会有一些比自己厉害的人)以目前的情况来看,C语言掌握到了二维数组.java才刚开始.目前开始认真规划时间了(尽量不放过每一个碎片化时间)统计任一整数中某个位数出现的次数。一波三折,报了网课.
2024-11-07 22:51:48
327
原创 关于我自学编程的第一篇博客
至于以后渴望进入的IT公司,目前还不敢妄想,不过也是会以以后能找到一份好工作而奋发努力的,加油!二是希望计成之时能参加各类比赛,如蓝桥杯等,挑战自我,并希望获得省级以上的奖项,荣誉自我。至于编程的学习,我计划以网课为主,学校课程以及书本类知识为辅,并以刷题,做作业为复习。三是希望我在熟练掌握编程之后能作为我谋生的一项专业技能,将来能找到好工作。在学习编程上,我计划每个工作日不少于三个小时,每周不少于十八个小时。本人学习编程一是为了提升自我硬实力,满足自我,本人是大一新生,专业为软件工程。
2024-09-29 17:15:41
179
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅