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

相关推荐
进阶小白猿5 小时前
Java技术八股学习Day36
学习
wfeqhfxz25887825 小时前
YOLO13-C3k2-GhostDynamicConv烟雾检测算法实现与优化
人工智能·算法·计算机视觉
毕设源码-朱学姐6 小时前
【开题答辩全过程】以 基于JavaWeb的网上家具商城设计与实现为例,包含答辩的问题和答案
java
Aaron15886 小时前
基于RFSOC的数字射频存储技术应用分析
c语言·人工智能·驱动开发·算法·fpga开发·硬件工程·信号处理
四维碎片7 小时前
【Qt】UDP跨平台调试工具
qt·学习·udp
好奇龙猫7 小时前
【人工智能学习-AI入试相关题目练习-第十八次】
人工智能·学习
C雨后彩虹7 小时前
CAS与其他并发方案的对比及面试常见问题
java·面试·cas·同步·异步·
程序员辣条7 小时前
AI产品经理:2024年职场发展的新机遇
人工智能·学习·职场和发展·产品经理·大模型学习·大模型入门·大模型教程
_不会dp不改名_8 小时前
leetcode_3010 将数组分成最小总代价的子数组 I
算法·leetcode·职场和发展
wanping158259923418 小时前
AI Agent(学习六-FAISS 持久化到磁盘(重启不丢记忆))
人工智能·学习·faiss