JAVA学习

多线程

多线程:同时让程序做多件事情

作用:提高效率

应用场景:软件中的耗时操作、所有的聊天软件、所有的服务器

并发:在同一时刻,有多个指令在单个CPU上交替执行

并行:在同一时刻,有多个指令在多个CPU上同时执行

多线程三种实现方法:

继承Thread类:

优点:编程比较简单,可以直接使用Thread类中的方法

缺点:可以扩展性较差,不能再继承其他的类

实现Runnable接口|实现Callable接口

优点:扩展性强,实现该接口的同时还可以继承其他的类

缺点:编程相对复杂,不能直接使用Thread类中的方法

线程的优先级:10优先级最高 1优先级最小

礼让线程:礼让 yield()

守护线程:setDaemon()非守护线程执行完之后,守护线程没有执行的必要

插入线程:join直接插队

同步代码块

synchronized(锁对象){

操作共享数据的代码

}

锁对象唯一

特点1:锁默认打开,有一个线程进去了,锁自动关闭

特点2:里面的代码全部执行完毕,线程出来,锁自动打开

同步方法:

格式 修饰符 synchronized 返回值类型 方法名(方法参数){...}

特点1:同步方法是锁住方法里面所有的代码

特点2:锁对象不能自己指定 非静态:this 静态:当前字节码文件对象

Lock锁

手动上锁、手动释放锁

void lock():获得锁

void unlock():释放锁

Lock是接口不能直接实例化,这里采用它的实现类ReentrantLock来实例化

ReentrantLock():创建一个ReentrantLock的实例

锁禁止嵌套,等于崩溃

等待唤醒机制

常见方法:

void wait() 当前线程等待,直到被其他线程唤醒

void notify() 随机唤醒单个线程

void notifyAll() 唤醒所有线程

线程的状态

新建状态(NEW)------------------ 创建线程对象

就绪状态(RUNNABLE)------------start方法

阻塞状态(BLOCKED)------------ 无法获得锁对象

等待状态(WAITING)------------wait方法

计时状态(TIMED_WAITING)------sleep方法

结束状态(TERMINATED)------全部代码运行完毕

线程池

原理:

  1. 创建一个池子,池子中是空的

  2. 提交任务时,池子会创建新的线程对象,任务执行完毕,线程归还给池子下回再次提交任务时,不需要创建新的线程,直接复用已有的线程即可

网络编程

  1. 计算机跟计算机之间通过网络进行数据传输

  2. 常见的软件架构 cs/bs

  3. 通信的软件架构cs/bs的优缺点

  • cs:客户端服务端模式需要开发客户端

  • bs:浏览器服务端模式不需要开发客户端

  • cs:适合定制专业化的办公类软件如:IDEA、网游

  • bs:适合移动互联网应用,可以再任何地方随时访问的系统

  1. 三要数:IP、端口号、协议

IP

设备在网络中的地址,是唯一的标识

作用:设备在网络中的地址,是唯一的标识

IPV4特点:目前的主流方法最多只有2^32次方个ip,目前已经用完了

IPV6特点:为了解决IPV4不够用而出现的,最多有2^128次方个IP

特殊的IP是什么:127.0.0.1

常见的两个CMD命令:

ipconfig:查看本机IP地址

ping:检查网络是否连通

端口号:应用程序在设备中唯一的标识

注意:一个端口号只能被一个应用程序使用

协议

协议:数据在网络中传输的规则

常见的协议:UDP、TCP、http、https、ftp

UDP协议

  • 用户数据报协议

  • UDP是面向无连接通信协议,速度快,有大小限制异常最多发送64K,数据不安全

TCP协议:

  • 传输控制协议TCP

  • TCP协议是面向连接的通信协议,速度慢,没有大小限制,数据安全。

UDP的三种通信方式:

  1. 单播

  2. 组播 地址224.0.0.0~239.255.255.255 其中224.0.0.0~224.0.0.255为预留的组播地址

  3. 广播 广播地址:255.255.255.255

相关推荐
Mikko77 分钟前
JVM 线上排查实战(七):jps 看不到进程、jstack 报不允许的操作怎么办?attach 失败的六种情况实测
java·运维·jvm·后端
jianjinwssy8 分钟前
MyBatis-Plus 从入门到实战:常用功能与核心原理
java·mybatis
镜子AI14 分钟前
教培机构多模态内容跨模态检索系统:基于CLIP的统一表征与图文混合召回算法
人工智能·python·算法·机器学习
会编程的吕洞宾16 分钟前
Spring AI 2.0 会话记忆实战,让 AI 助手记住每一次对话
java·人工智能·spring
小宋102120 分钟前
Agent 工具升级如何不破坏线上:Tool Schema 版本兼容与契约测试
java·人工智能·后端·spring
汤米粥24 分钟前
后端开发主流技术方案
java·python·golang·php·nodejs·后端开发
小宋102125 分钟前
合成评测集怎么造才不“自嗨”:自动出题、去重、泄漏检测与人工抽检
人工智能·算法·机器学习
Helix25028 分钟前
2026编程入门指南:零基础如何科学选择第一门编程语言?
java·c语言·javascript·零基础·编程语言·python入门·编程就业
JWASX28 分钟前
Java 转 go 学习 - Redis(1)
学习·golang
EatFan29 分钟前
2026 后端 AI 集成三条落地路径:Spring AI 2.0、MCP 协议与旁路服务怎么选
java·人工智能·spring boot·spring·大模型·spring ai·mcp