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

相关推荐
风已经起了3 小时前
FPGA学习笔记——IIC协议简介
笔记·学习·fpga开发
lingggggaaaa3 小时前
小迪安全v2023学习笔记(六十二讲)—— PHP框架反序列化
笔记·学习·安全·web安全·网络安全·php·反序列化
呼啦啦啦啦啦啦啦啦4 小时前
常见的排序算法
java·算法·排序算法
我们从未走散5 小时前
JVM学习笔记-----StringTable
jvm·笔记·学习
anlogic5 小时前
Java基础 8.18
java·开发语言
胡萝卜3.05 小时前
数据结构初阶:排序算法(一)插入排序、选择排序
数据结构·笔记·学习·算法·排序算法·学习方法
地平线开发者5 小时前
LLM 中 token 简介与 bert 实操解读
算法·自动驾驶
练习时长一年6 小时前
AopAutoConfiguration源码阅读
java·spring boot·intellij-idea
scx201310046 小时前
20250814 最小生成树和重构树总结
c++·算法·最小生成树·重构树
阿巴~阿巴~6 小时前
冒泡排序算法
c语言·开发语言·算法·排序算法