网站透明导航代码,服务器内部打不开网站,白酒网站设计,郑州最好的人流医院多线程-网络编程
前言
多线程JUC
多线程三种实现方式
第一种实现方式
第二种实现方式
第三种实现方式
常见成员方法
买票引发的安全问题
同步代码块
同步方法
Lock锁
生产者和消费者
常见方法
等待唤醒机制
练习
抢红包
抽奖
多线程统计并求最…多线程-网络编程
前言
多线程JUC
多线程三种实现方式
第一种实现方式
第二种实现方式
第三种实现方式
常见成员方法
买票引发的安全问题
同步代码块
同步方法
Lock锁
生产者和消费者
常见方法
等待唤醒机制
练习
抢红包
抽奖
多线程统计并求最大值
多线程之间的比较
线程池
自定义线程池
任务拒绝策略
网络编程
IP
IPV4
IPV6
端口号
协议
UDP通信程序
发送数据
接收数据
聊天室
UDP的三种通信方式
TCP通信程序
练习
发送数据
接收和反馈
上传文件
上传文件(多线程版)
上传文件(线程池优化) 前言
接上期文章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通信程序 练习
发送数据
接收和反馈 客户端:发送一条数据接收服务端反馈的消息并打印 服务器:接收数据并打印再给客户端反馈消息 上传文件 客户端:将本地文件上传到服务器。接收服务器的反馈。 服务器:接收客户端上传的文件上传完毕之后给出反馈。 上传文件(多线程版) 想要服务器不停止能能接收很多用户上传的图片 提示:可以用循环或者多线程 但是循环不合理最优解法是(循环多线程)改写 上传文件(线程池优化)