今天学习了多线程剩余的内容和一部分网络编程
线程同步:
实现线程同步的方法有synchronized 方法和 synchronized 块。
线程同步实现的前提:
必须要有两个或以上的线程必须是所有的线程使用同一个锁这样保证同步中只能有一个线程在运行
死锁:
死锁产生的原因:
多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能进行,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形。
如何解决死锁问题:
死锁是由于“同步块需要同时持有多个对象锁造成”的,要解决这个问题,思路很简单,就是:同一个代码块,不要同时持有两个对象锁
生产者和消费者模式
网络编程三要素:
IP地址 端口 协议
通信协议:
通过计算机网络可以实现不同计算机之间的连接与通信,但是计算机网络中实现通信必须有一些约定即通信协议,对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准
就像两个人想要顺利沟通就必须使用同一种语言一样,如果一个人只懂英语而另外一个人只懂中文,这样就会造成没有共同语言而无法沟通。
IP地址的分类
IPV4:32位地址 IPV6:128位
Socket的含义
开发的网络应用程序位于应用层,TCP和UDP属于传输层协议,在应用层如何使用传输层的服务呢?在应用层和传输层之间,则是使用套接Socket来进行分离。 Socket实际是传输层供给应用层的编程接口。Socket就是应用层与传输层之间的桥梁。使用Socket编程可以开发客户机和服务器应用程序,可以在本地网络上进行通信,也可通过Internet在全球范围内通信。
数据的传输模式
TCP协议和UDP协议是传输层的两种协议
TCP和UDP协议的区别
1. TCP是面向连接的,传输数据安全,稳定,效率相对较低。
2. UDP是面向无连接的,传输数据不安全,效率较高。
TCP通信原理
TCP是面向连接的,所谓面向连接,就是当计算机双方通信时必需经过先建立连接,然后传送数据,最后拆除连接三个过程。
TCP通信的步骤
第一步,是请求端(客户端)发送一个包含SYN即同步(Synchronize)标志的TCP报文,SYN同步报文会指明客户端使用的端口以及TCP连接的初始序号。
第二步,服务器在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示客户端的请求被接受,同时TCP序号被加一,ACK即确认(Acknowledgement)。
第三步,客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加一,到此一个TCP连接完成。然后才开始通信的第二步:数据处理。
这就是所说的TCP的三次握手(Three-way Handshake)。
UDP协议的特点
基于TCP协议可以建立稳定连接的点对点的通信。这种通信方式实时、快速、安全性高,但是很占用系统的资源。
InetAddress类的作用及常用方法
作用:封装计算机的IP地址和DNS(没有端口信息)。
注:DNS是Domain Name System,域名系统。
这个类没有构造方法。如果要得到对象,只能通过静态方法:getLocalHost()、getByName()、 getAllByName()、 getAddress()、getHostName()。
InetSocketAddress类的作用
包含IP和端口信息,常用于Socket通信。此类实现 IP 套接字地址(IP 地址 + 端口号),不依赖任何协议。