- 博客(18)
- 收藏
- 关注
原创 ”wait”和“notify”为什么要在Synchronized代码块里面?
wait和notify用来实现多线程之间的协调,wait表示让线程进入到阻塞状态,notify表示让阻塞的线程唤醒。
2024-09-05 08:59:00 621
原创 分布式事务的实现方式之XA协议
XA协议是一种基于两阶段提交(Two-Phase Commit)的分布式事务协议,用于实现跨多个资源管理器(如数据库、消息队列等)的分布式事务一致性。
2024-09-02 18:37:57 439
原创 深度解读并发安全集合的原理及源码
本节主要介绍J.U.C包中的几种并发安全集合:ConcurrentHashMap,ConcurrentLinkedQueue,和ConcurrentLinkedDeque。所谓并发安全集合,相对于普通集合来说,能够保证在多线程环境下向集合中添加数据时的线程安全性。主要讲ConcurrentHashMap在实现线程安全性方面对性能和安全性的合理平衡。
2024-09-01 09:27:40 1457
原创 深度剖析阻塞队列的设计原理及实现
队列是一种基本的数据结构,它是一个只允许在一端进行移除操作,在另一边进行插入操作的线性表,允许插入的一端叫队尾,允许移除的一端成为队头。其实阻塞队列在队列的基础上增加了两个操作。支持阻塞插入:在队列满的情况下,会阻塞继续往队列中添加数据的线程,直到队列中有元素被释放。支持阻塞移除:在队列为空的情况下,会阻塞从队列中获取元素的线程,直到队列中添加了新的元素。
2024-08-31 10:49:59 904
原创 J.U.C并发工具集实战及原理分析
在J.U.C里提供了很多的并发控制工具类,这些工具类可以使得线程按照业务的某种约束来执行。本节包含CountDownLatch、Semaphore、CyclicBarrier等工具类。目的是了解他们基本使用、原理及实际应用。
2024-08-31 10:46:58 810
原创 并发安全性之Lock锁及原理分析
ReentrantReadWriteLock锁有一个问题,如果当前有现成在调用get()方法,那么所有调用add()方法的线程必须等待调用get()方法的线程释放锁之后才能写,也就是说在读的过程中不允许写。而如果get的方法的线程比较多时,会导致写线程一直类阻塞。为解决ReentrantReadWriteLock中的这个潜在的问题,在java8中引入了StampedLock机制,即优化了读写锁的访问,简单的说就是提供了一种乐观锁策略,当有现成调用get方法读取数据时,不会阻塞准备执行写操作的线程。
2024-08-29 12:42:44 1038
原创 Java线程的实践及原理揭秘
由于单个程序无法让CPU和I/O设备始终处于忙碌状态,所以操作系统允许同时加载多个程序到内存,也就是说可以同时启动多个进程,系统给这些进程分配独立的地址空间,以保证每个进程的地址不会相互干扰。即横向增加服务器,利用多个计算机组成分布式计算机,当然,整个系统的复杂性增加,比如涉及服务治理,服务监控,服务的高可用。线程是操作系统能够运算和调度的最小单元,一个进程可以创建多个线程,每个线程可以并行执行多个任务,并行执行的线程的数量是由CPU的核心数量来决定的。硬件的组成CPU,网卡,带宽,磁盘,内存。
2024-08-27 08:59:07 912
原创 MybatisPlusGenerator自定义模板生成文件
本文章按照MybatisPlusGenerator规范,并自定义模版生成对应的Controller,IService,ServiceImpl,Entity,Mapper,Mapper.xml。
2024-08-27 08:50:29 1067
Eclipse 工作流 activiti-designer离线安装包
2024-08-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人