
javaEE初阶
文章平均质量分 97
初晴~
悟已往之不谏,知来者之可追
展开
-
【多线程】面试高频考点!JUC常见类的详细总结,建议收藏!
虽然有线程安全的Hashtable或Collections.synchronizedMap(),但它们加锁的方式比较“粗暴”,运行效率往往不高。JUC中就提供了一个 ConcurrentHashMap 类,它在多线程环境下就有更高的性能,因为它采用了分段锁(segmentation)技术,而不是在整个映射上加锁。这意味着多个线程可以同时进行读取操作,甚至在某些条件下可以同时进行写入操作。原创 2024-09-25 21:06:35 · 1532 阅读 · 68 评论 -
【多线程】CAS的原理及应用,看这篇文章就够啦
CAS(Compare and Swap),中文译为“比较并交换”,是一种无锁算法中常用的原子操作。CAS通常用于实现线程之间的同步,特别是在多线程环境下需要保证原子性的场景下。CAS操作涉及三个操作数:内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置的值更新为新值。否则,操作失败,处理器不做任何事情。简单来说就是以下三步:1.⽐较 A 与 V 是否相等。(⽐较)2.如果⽐较相等,将 B 写⼊ V。(交换)3.返回操作是否成功。原创 2024-09-21 09:13:42 · 1490 阅读 · 72 评论 -
【多线程】常见的锁策略
多线程之间,数据的读取⽅之间不会产⽣线程安全问题,但数据的写⼊⽅互相之间以及和读者之间都需要进⾏互斥。如果两种场景下都⽤同⼀个锁,就会产⽣极⼤的性能损耗。所以读写锁因此⽽产⽣。读写锁(readers-writer lock),看英⽂可以顾名思义,在执⾏加锁操作时需要额外表明读写意图,重复读者之间并不互斥,⽽写者则要求与任何⼈互斥。⼀个线程对于数据的访问,主要存在两种操作:读数据 和 写数据.原创 2024-09-18 11:40:41 · 1401 阅读 · 77 评论 -
【多线程】深入剖析线程池的应用
线程池亦是如此,它预先创建了一组可重用的线程,当有新的任务提交给线程池时,线程池就会从池中取出一个空闲的线程来执行这个任务;而当线程完成任务后,它并不会被销毁,而是再次返回到线程池中等待下一个任务。从而大幅提高线程利用率,提升效率。原创 2024-09-16 18:24:26 · 819 阅读 · 53 评论 -
【多线程】深入剖析定时器的应用
定时器是软件开发中的⼀个重要组件. 类似于⼀个 "闹钟".使其能够在未来的某个时间点或按照预定的时间间隔执行某个指定好的代码。是⼀种实际开发中⾮常常⽤的组件。常见作用:1. 计划任务:定时器可以用于执行定期任务,比如数据备份、日志清理、定时发送邮件等。2. 延迟操作:可以设置一个任务在一段时间后执行,例如,实现一个倒计时功能,在特定时间后触发事件。3. 定时刷新:在Web应用中,定时器可以用于定时刷新页面或数据,保持与服务器同步的状态。原创 2024-09-12 09:43:55 · 607 阅读 · 54 评论 -
【多线程】深入剖析生产者-消费者模型
⽣产者消费者模式就是通过⼀个容器来解决⽣产者和消费者的强耦合问题。⽣产者和消费者彼此之间不直接通讯,⽽通过阻塞队列来进⾏通讯,所以⽣产者⽣产完数据之后不⽤等待消费者处理,直接扔给阻塞队列,消费者不找⽣产者要数据,⽽是直接从阻塞队列⾥取.原创 2024-09-05 09:57:12 · 1578 阅读 · 50 评论 -
【多线程】设计模式之单例模式
设计模式好⽐象棋中的 "棋谱". 红⽅当头炮, ⿊⽅⻢来跳. 针对红⽅的⼀些⾛法, ⿊⽅应招的时候有⼀些固定的套路. 按照套路来⾛局势就不会吃亏.软件开发中也有很多常⻅的 "问题场景". 针对这些问题场景, ⼤佬们总结出了⼀些固定的套路. 按照这个套路来实现代码,就可以保证代码不会太差按照设计模式编写代码能让代码更加“死板”一些。代码太过“灵活”也不见得是件好事,反而容易出现难以预料的bug。“死板”一些能一定程度上提高代码的规范性,减少bug的产生设计模式与框架:设计模式。原创 2024-08-31 16:02:37 · 1062 阅读 · 53 评论 -
【多线程】线程的等待通知机制-wait与notify
我们都知道,线程在系统调度上是随机的,因此线程之间执⾏的先后顺序难以预知。但在实际开发中有时我们希望控制多个线程执行某个逻辑的先后顺序,就可以让后执行的逻辑使用wait,先执行的线程完成某些逻辑后,再通过notify唤醒对应的线程,从而使多个线程以一定的顺序进行运行。那么本篇文章就让我们深入地去探讨wait与notify的特点与应用吧一、wait()wait 做的事情:使当前执⾏代码的线程进⾏等待. (把线程放到等待队列中)释放当前的锁。原创 2024-08-29 13:45:35 · 1306 阅读 · 32 评论 -
【多线程】深入剖析线程安全问题
主要是由于一些程序员写出的代码过于低效,为了降低程序员的门槛,即使代码水平一般,最终的运行速度也不至于太低,因此,主流编译器都会引入优化机制优化编译器会自动调整你的代码,保持在原有逻辑不变的前提下,提高代码的执行效率。在一般情况下,代码优化的效果是非常好的。但是,编译器的优化是一个非常复杂的问题,某个代码,何时优化,优化到什么程度都是不好确定的。对于程序员来说,很难确定某个代码是否会优化,并且代码稍微变化一点,优化结果可能都截然不同原创 2024-08-26 21:07:56 · 1384 阅读 · 28 评论 -
【多线程】初步认识Thread类及其应用
操作系统针对多个线程的执行,是一个“随机调度”,抢占式执行的过程。线程的调度执行是随机的,我们无法确定两个线程的调度顺序,但是可以控制谁先结束谁后结束。线程等待就是确定两个线程的结束顺序,通过让后结束的线程等待先结束的线程执行,进入阻塞状态,直到先结束的线程执行完毕,此时阻塞解除,后结束的线程开始执行。这样就能使两个线程的结束顺序得以确定原创 2024-08-18 16:24:30 · 997 阅读 · 30 评论 -
【多线程】初识进程和线程
进程是计算机中正在运行的程序的实例。它是操作系统进行资源分配和调度的基本单位。每个进程都有自己的内存空间、代码、数据和执行状态。进程可以独立运行,相互之间不会干扰。操作系统可以同时运行多个进程,通过分配时间片轮流执行它们,从而实现多任务处理。进程可以与其他进程进行通信和协作,共享资源和数据。原创 2024-08-12 14:04:47 · 1025 阅读 · 26 评论