自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 学习笔记——手撕AQS

这版代码有两个问题,第一,当某一个线程持有锁后,flag变为true,其他想要获取锁的线程只能在lock()中不停的循环,很消耗CPU;第二,线程A获取锁后,线程B也能解锁,也就是无法保证锁的对称性,即加锁解锁是同一个线程。版本1 要实现lock()和unlock()两个方法,需求是线程调用lock()获取锁,未获取到锁就阻塞在lock()中,采用原子变量AtomicBoolean+CAS实现,unlock()同理。跟着视频学完了AQS相关内容,写点笔记记录一下,把输入的内容消化输出一下。

2025-04-20 23:33:56 197

原创 学习笔记——手撕定时任务

现在要设计一个定时任务,task表示要执行的任务,delay表示延时时间,默认为毫秒,最直观的想法是定义一个线程池来执行任务,假设定义一个固定大小线程池,线程数为10,使用Thread.sleep()表示任务延迟时间,加一个死循环来每次让任务在延迟相应的时间后不停地去执行。这种设计也能看到一个很明显的问题,即使list中先执行的任务要等待1s,后执行的任务只需等待0.5s,后执行的任务也要在1s后才能执行。所以改为PriorityBlockingQueue来实现,每次拉取到的任务一定是最优先执行的。

2025-04-09 21:41:32 200

原创 启动SpringBoot项目时,Lombok不生效

启动SpringBoot项目时,出现上述报错信息,依次确认已经正确安装lombok插件,引入了Lombok依赖,并按照提示开启了Enable annotation processing,但是仍然未解决问题。

2025-03-23 22:21:18 607

原创 实现一个支持多线程同时写入和阻塞取数的工具类

【代码】实现一个支持多线程同时写入和阻塞取数的工具类。

2025-02-24 16:50:26 277

原创 生产者-消费者模型

采用synchronized()+wait()+notify()实现。

2025-02-22 12:10:46 279

原创 面向对象设计

现在有一个停车场,停车场里面有两种车位:大车位和小车位。现在有两种车,一种大车,一种小车。大车只能停在大车位里面,小车两种车位都可以去停,一个车位只能停一辆车。在这个前提条件之下,如果一辆车到这个停车场门口,有能停的车位就让他进去,没有就让这个车走。设计一个停车场的管理系统。既然是面向对象,首先要搞清楚有几个对象,上述要求可以缩减为“车停在停车场的车位里”,那么可以抽象出三个对象:停车位、车、停车场。

2025-02-21 18:44:56 425

空空如也

空空如也

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

TA关注的人

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