java常识2

简介: 本内容介绍了并发编程中的核心概念与实现机制,包括悲观锁与乐观锁的原理及应用、Java中的synchronized与ReentrantLock的区别、线程池的参数配置、线程创建方式、Lambda表达式的特性、反射机制及其应用场景。内容涵盖了数据库锁、第三方中间件锁、JUC并发包中的常用工具类,以及BIO、NIO、AIO的基本原理和使用场景,适合对Java并发编程有深入学习需求的开发者参考。

悲观锁:互斥的

  • 数据库锁
  • update
  • 修改表字段
  • 追加索引
  • select ... for update
  • 读锁/写锁
  • 共享锁/排它锁
  • java锁
  • synchronzed
  • reetrantlock
  • 第三方中间件
  • redis:setnx ex
  • redisson
  • zookeeper
  • etcd3

乐观锁:CAS思想(比较并交换)可能会引发ABA问题通过使用时间戳或者版本号解决

synchronized与lock和volatile

syn和reetranlock的区别

  • syn:
  • 锁在方法体上、同步代码块
  • JVM统一管理
  • 锁升级: 偏->轻量->重量
  • re
  • 代码块
  • 手动lock...unlock
  • 两者都是可重入锁

reetranlock 的实现原理

  • AQS(abstract queue sychronzed)
  • 底层有一个volitale修饰的变量
  • 0:无锁状态
  • 1:有锁状态
  • FIFO:first in first out
  • 加锁过程:变量state:0->1
  • 如果加锁的过程中,发现别人加锁了,就会进入自旋

JUC并发包

ComplateAbleFuture + CountDownLatch

Future接口

ReetrantLock

ConcurrentHashMap

CopyOnWriteArrayList(安全的arrarylist)

BIO NIO AIO

连接的四个阶段

服务器等待连接

客户端连接

服务器端准备数据,

服务器端传输数据到客户端

BIO(线程阻塞)

当客户端进行连接是,就会由线程进行处理(哪怕是数据在准备阶段,线程也是在进行阻塞)一连接一线程在高并发环境性能比较低

NIO(非阻塞io)

在高并发环境下主要采用多路复用技术,当有io请求时就会加入channel的双端,通过selcetor进行轮询查看数据状态,最后由由一个线程去统一处理io请求

AIO(异步io)

发出请求之后,不会进行阻塞,最终服务器端

threadlocal 多线程环境下

针对共享变量的每个线程都有一份,互不影响,线程对象内部有threadlocalmap,来存储线程隔离的资源,threadlocal作为key共享变量作为value,通过get和set方法进行设定保存,当不再使用是要用remove方法进行资源的清空,避免资源泄露

线程池七大参数

核心线程数 cpu密集型 ,io密集型

总线程数

存活时间(临时线程)

存活时间单位

工作队列

线程工厂

拒绝策略

线程创建的方式:

继承Thread,重写run方法,无返回值

实现Runable无返回值

实现Callable接口+future,有返回值

自定义线程池

lambda jdk8增加的特性

表达式本质

实现函数式借口

然后重写借口的唯一抽象方法

并返回实现类的实例化对象

与匿名内部类差不多,又称作箭头函数

但是匿名内部类可以实现其他借口和抽象类

匿名内部类作用与编译阶段

lambda作用与运行阶段

lambda的this作用域根据上下文,一般是包含lambda的外层类

匿名函数的this作用域是自身

反射

本质是jvm运行阶段动态获取class对象,反向加载类结构,操作类的成员

jvm在加载类时,会通过类加载器将.class文件解析成内存中的class对象,然后通过class对象访问存储在方法区的元数据

作用场景bean的注入junit的实现,mybatis的映射

效率方面:低于直接调用,因为反射要进行动态解析结构

相关文章
|
22天前
非一样的感觉,万相 3.0 基于SKILL视频生成!
万相3.0(Wan3.0)是阿里最新All-in-One视频生成模型,支持有声视频生成、多模态参考(图/视/音/文档/网页)、视频编辑与延长,单次最长30秒,原生输出台词、BGM及音效,首帧/首尾帧精准控制。(239字)
495 2
|
3月前
|
人工智能 安全 芯片
OpenClaw免费安装教程,TopClaw零基础本地部署+1000万token领取
本文介绍TopClaw——一款专为小白设计的OpenClaw开源大模型“傻瓜式”本地部署工具。无需编程基础,Windows/Mac一键安装,中文界面友好,自带1000万免费token,全程离线运行,兼顾高效与隐私安全。
360 2
|
2月前
|
人工智能 运维 自然语言处理
RAG 2.0 落地观察:多智能体协同架构,如何重构垂直行业大模型应用
RAG 2.0 是面向垂直行业的技术跃迁:突破传统RAG“检索-生成”单链局限,以多智能体协同、向量+知识图谱双引擎、全链路风控内嵌、增量式知识运营四大升级,显著提升招投标、金融、政务等高合规场景的规则识别精度、生成专业性与落地可靠性。
|
7月前
|
人工智能 Linux API
OpenClaw从入门到落地:阿里云轻量部署、MacOS/Linux/Windows11本地安装+千问/Coding Plan API实战
在人工智能代理工具快速迭代的2026年,OpenClaw(曾用名Clawdbot)凭借轻量化部署、Skills生态扩展、多平台兼容与大模型无缝对接的特性,成为个人与小型团队搭建AI自动化助理的首选方案。它采用“核心平台+技能插件”的架构设计,既能在阿里云轻量服务器上实现7×24小时稳定运行,也能在MacOS、Linux、Windows11本地设备完成离线部署,同时支持阿里云千问大模型API与免费Coding Plan API的快速配置,满足不同场景下的AI能力调用需求。本文基于2026年最新稳定版本,从零开始讲解阿里云轻量服务器部署OpenClaw的全流程、本地三大操作系统的安装步骤、Skil
894 0
|
存储 运维 监控
120_检查点管理:故障恢复 - 实现分布式保存机制
在大型语言模型(LLM)的训练过程中,检查点管理是确保训练稳定性和可靠性的关键环节。2025年,随着模型规模的不断扩大,从百亿参数到千亿参数,训练时间通常长达数周甚至数月,硬件故障、软件错误或网络中断等问题随时可能发生。有效的检查点管理机制不仅能够在故障发生时快速恢复训练,还能优化存储使用、提高训练效率,并支持实验管理和模型版本控制。
775 5
120_检查点管理:故障恢复 - 实现分布式保存机制
|
自然语言处理 调度
扩散语言模型的下一跳:引入“路径因果耦合机制”
本文探讨扩散语言模型(D-LLM)的演化方向,指出当前扩散路径存在“孤岛化”问题,提出“路径因果耦合机制”,增强生成文本的逻辑一致性与结构性,提升生成质量与收敛速度,有望成为扩散语言模型迈向认知智能的重要一步。
424 0
|
JavaScript 应用服务中间件 nginx
nginx部署vue项目
本文介绍了将Vue项目部署到Nginx的步骤,包括构建Vue项目、上传dist文件夹到服务器、安装Nginx、配置Nginx代理静态文件以及重启Nginx,确保了Vue应用可以通过域名或IP地址访问。
1210 1
|
监控
量子雷达技术:隐形目标探测的新方法
【10月更文挑战第4天】量子雷达技术基于量子力学原理,利用量子纠缠特性实现目标探测,在精度和距离上超越传统雷达。它能穿透隐身材料,具备高灵敏度和抗干扰性,并可在军事、空间探测及民用监测等领域广泛应用。随着技术进步,量子雷达有望成为未来隐形目标探测的关键工具。
|
Linux Shell 持续交付
Linux下vim的配置
本文介绍了如何对vim进行基础配置,如行号显示、缩进设置等,并推荐了一种自动化部署方案,通过链接下载预配置的vim环境脚本,简化了配置过程,提升开发效率。
772 3
Linux下vim的配置
|
数据管理 API 调度
阿里云百炼平台知识检索应用评测:搭建之旅与一点建议
阿里云百炼平台成为企业智能化转型的重要工具之一。