JavaSE学习心得(多线程与网络编程篇)
多线程-网络编程
前言
接上期文章:JavaSE学习心得(异常和文件流篇)
教程链接:黑马程序员Java零基础视频教程_下部(Java入门,含斯坦福大学练习题+力扣算法题和大厂java面试题)_哔哩哔哩_bilibili
本期分享多线程、网络编程部分
多线程&JUC
什么是多线程?
多线程可以让程序同时做多件事情
多线程的作用?
提高效率
多线程的应用场景?
想让多个事情同时运行就需要用到多线程比如:软件中的耗时操作、所有的聊天软件、所有的服务器
并发:在同一时刻,有多个指令在单个CPU交替执行
并行:在同一时刻,有多个指令在多个CPU同时执行
多线程三种实现方式
第一种实现方式
第二种实现方式
第三种实现方式
常见成员方法
买票引发的安全问题
同步代码块
把操作共享数据的代码锁起来
特点1:锁默认打开,有一个线程进去了,锁自动关闭
特点2:里面的代码全部执行完毕,线程出来,锁自动打开
同步方法
就是把synchronized关键字加到方法上
特点1: 同步方法是锁住方法里面所有的代码
特点2:锁对象不能自己指定
Lock锁
手动上锁、手动释放锁
void lock():获得锁
void unlock():释放锁
Lock是接口不能直接实例化,这里采用它的实现类ReentrantLock来实例化
生产者和消费者
常见方法
等待唤醒机制
练习
抢红包
抢红包也用到了多线程。
假设:100块,分成了3个包,现在有5个人去抢。
其中,红包是共享数据。
5个人是5条线程。
打印结果如下:
XXX抢到了XXX元
XXX抢到了XXX元
XXX抢到了XXX元
XXX没抢到
XXX没抢到
抽奖
多线程统计并求最大值
在上一题基础上继续完成如下需求:
每次抽的过程中,不打印,抽完时一次性打印(随机)在此次抽奖过程中,抽奖箱1总共产生了6个奖项
分别为:10,20,100,500,2,300最高奖项为300元,总计额为932元在此次抽奖过程中,抽奖箱2总共产生了6个奖项。
分别为:5,50,200,800,80,700最高奖项为800元,总计额为1835元
多线程之间的比较
在上一题基础上继续完成如下需求:
在此次抽奖过程中,抽奖箱1总共产生了6个奖项,分别为:10,20,100,500,2,300最高奖项为300元,总计额为932元
在此次抽奖过程中,抽奖箱2总共产生了6个奖项,分别为:5,50,200,800,80,700最高奖项为800元,总计额为1835元
在此次抽奖过程中,抽奖箱2中产生了最大奖项,该奖项金额为800元
以上打印效果只是数据模拟,实际代码运行的效果会有差异
线程池
① 创建一个池子,池子中是空的
②提交任务时,池子会创建新的线程对象,任务执行完毕,线程归还给池子,下回再次提交任务时,不需要创建新的线程,直接复用已有的线程即可
③ 但是如果提交任务时,池子中没有空闲线程,也无法创建新的线程,任务就会排队等待
Executors:线程池的工具类通过调用方法返回不同类型的线程池对象
自定义线程池
任务拒绝策略
网络编程
什么网络编程?
计算机跟计算机之间通过网络进行数据传输常见软件架构有哪些?
CS/BS
通信的软件架构CS\BS的各有什么区别和优缺点
CS:客户端服务端模式需要开发客户端
BS:浏览器服务端模式不需要开发客户端。
CS:适合定制专业化的办公类软件如:IDEA、网游BS:适合移动互联网应用,可以在任何地方随时访问的系统
网络编程三要素分别表示什么?
IP:设备在网络中的地址,是唯一的标识端口号:应用程序在设备中唯一的标识。
协议:数据在网络中传输的规则
常见的协议有UDP、TCP、http、https、ftp
IP
Ip的作用
设备在网络中的地址,是唯一的标识
IPv4有什么特点
目前的主流方案最多只有2^32次方个ip,目前已经用完了
IPv6有什么特点
为了解决IPv4不够用而出现的最多有2^128次方个ip
可以为地球上的每一粒沙子都设定ip
IPV4
采用32位地址长度,分成4组
IPV6
现在如何解决IPV4不够的问题?
利用局域网IP解决IP不够的问题
特殊的IP是什么?
127.0.0.1(永远表示本机)
常见的两个CMD命令?
ipconfig:查看本机IP地址
ping:检查网络是否连通
端口号
应用程序在设备中唯一的标识。
端口号:由两个字节表示的整数,取值范围:0~65535
其中0~1023之间的端口号用于一些知名的网络服务或者应用。
我们自己使用1024以上的端口号就可以了。
注意:一个端口号只能被一个应用程序使用。
协议
计算机网络中,连接和通信的规则被称为网络通信协议
UDP协议
用户数据报协议(User Datagram Protocol)
UDP是面向无连接通信协议。
速度快,有大小限制一次最多发送64K,数据不安全,易丢失数据
TCP协议
传输控制协议TCP(Transmission control Protocol)TCP协议是面向连接的通信协议。
速度慢,没有大小限制,数据安全。
UDP通信程序
发送数据
创建发送端的Datagramsocket对象
数据打包(DatagramPacket)
发送数据
释放资源
接收数据
创建接收端的DatagramSocket对象
接收打包好的数据
解析数据包
释放资源
聊天室
按照下面的要求实现程序
UDP发送数据: 数据来自于键盘录入,直到输入的数据是886,发送数据结束UDP接收数据: 因为接收端不知道发送端什么时候停止发送,故采用死循环接收
UDP的三种通信方式
①单播
以前的代码就是单播
②组播组播地址:224.0.0.0~239.255.255.255
其中224.0.0.0~224.0.0.255 为预留的组播地址
③广播
广播地址:255.255.255.255
TCP通信程序
练习
发送数据
接收和反馈
客户端:发送一条数据,接收服务端反馈的消息并打印
服务器:接收数据并打印,再给客户端反馈消息
上传文件
客户端:将本地文件上传到服务器。接收服务器的反馈。
服务器:接收客户端上传的文件,上传完毕之后给出反馈。
上传文件(多线程版)
想要服务器不停止,能能接收很多用户上传的图片
提示:可以用循环或者多线程,
但是循环不合理,最优解法是(循环+多线程)改写
上传文件(线程池优化)
原文地址:https://blog.csdn.net/2403_85375987/article/details/145128779
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!