多线程
多线程:同时让程序做多件事情
作用:提高效率
应用场景:软件中的耗时操作、所有的聊天软件、所有的服务器
并发:在同一时刻,有多个指令在单个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)------全部代码运行完毕
线程池
原理:
-
创建一个池子,池子中是空的
-
提交任务时,池子会创建新的线程对象,任务执行完毕,线程归还给池子下回再次提交任务时,不需要创建新的线程,直接复用已有的线程即可
网络编程
-
计算机跟计算机之间通过网络进行数据传输
-
常见的软件架构 cs/bs
-
通信的软件架构cs/bs的优缺点
-
cs:客户端服务端模式需要开发客户端
-
bs:浏览器服务端模式不需要开发客户端
-
cs:适合定制专业化的办公类软件如:IDEA、网游
-
bs:适合移动互联网应用,可以再任何地方随时访问的系统
- 三要数: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的三种通信方式:
-
单播
-
组播 地址224.0.0.0~239.255.255.255 其中224.0.0.0~224.0.0.255为预留的组播地址
-
广播 广播地址:255.255.255.255