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

相关推荐
TDengine (老段)1 天前
TDengine 数学函数 CRC32 用户手册
java·大数据·数据库·sql·时序数据库·tdengine·1024程序员节
一种乐趣1 天前
PHP推荐权重算法以及分页
算法·php·推荐算法
心随雨下1 天前
Tomcat日志配置与优化指南
java·服务器·tomcat
Kapaseker1 天前
Java 25 中值得关注的新特性
java
wljt1 天前
Linux 常用命令速查手册(Java开发版)
java·linux·python
撩得Android一次心动1 天前
Android 四大组件——BroadcastReceiver(广播)
android·java·android 四大组件
canonical_entropy1 天前
Nop平台到底有什么独特之处,它能用在什么场景?
java·后端·领域驱动设计
chilavert3181 天前
技术演进中的开发沉思-174 java-EJB:分布式通信
java·分布式
ccLianLian1 天前
计算机视觉·TagCLIP
人工智能·算法
学习_学习_再学习1 天前
ffmpeg学习记录
学习·ffmpeg