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

相关推荐
HelloDam5 分钟前
基于元素小组的归并排序算法
后端·算法·排序算法
HelloDam5 分钟前
基于连贯性算法的多边形扫描线生成(适用于凸多边形和凹多边形)【原理+java实现】
算法
chushiyunen9 分钟前
dom操作笔记、xml和document等
xml·java·笔记
whisperrr.9 分钟前
【spring01】Spring 管理 Bean-IOC,基于 XML 配置 bean
xml·java·spring
chushiyunen12 分钟前
tomcat使用笔记、启动失败但是未打印日志
java·笔记·tomcat
天上掉下来个程小白18 分钟前
HttpClient-03.入门案例-发送POST方式请求
java·spring·httpclient·苍穹外卖
ModestCoder_28 分钟前
将一个新的机器人模型导入最新版isaacLab进行训练(以unitree H1_2为例)
android·java·机器人
a180079310801 小时前
软件工程面试题(二十二)
java·面试·软件工程
RainbowSea1 小时前
4. RabbitMQ 发布确认的配置详细说明
java·消息队列·rabbitmq
小脑斧爱吃鱼鱼1 小时前
鸿蒙项目笔记(1)
笔记·学习·harmonyos