day24:多线程 【等待唤醒机制】
等待唤醒机制[Object]
wait():让线程处于等待状态
notify():唤醒等待线程
实现或者重写父类方法,出现父类中没有的异常时,子类只能try catch。
wait():是Object类的方法,可以不用传参;释放锁对象
sleep():是Thread类的静态方法,需要传递参数;不释放锁对象
线程优先级
getProirity():获取优先级,默认设置为5,范围是[1,10]
setProirity():设置优先级
注意:优先级在一定程度上,可以提高优先级;少量数据不明显
线程拓展:
暂停线程:
public static void yeiod()
让线程更和谐,但是不能完全保证---【等待唤醒机制】
加入线程:
public final void join():
一旦有join()线程,其他线程必须先等待,直到该线程执行完
先启动要join的线程,再加入当前启动线程。
守护线程:
public final void setDaemon();
main()方法就是一个线程
设置线程为守护线程,一旦前台线程结束,守护线程结束
网络编程:
socket编程
网络概述
资源共享和信息传递--网络操作系统,网络管理软件,网络通信协议
网络模型:
OSI参考模型
物理层--比特流,数据链路层--交换机,网络层--路由器,传输层--协议和端口
会话层--会话,表示层--加密解密,压缩解压,应用层--应用软件
TCP/IP参考模型
应用层,传输层,网际层,主机至网络层
网络通信三要素:
IP:
“点分十进制”
IP地址分类:【五类】
IP地址 = 网络号码 + 主机地址
查看本机IP:ipconfig--查看网络IP ping---查看网络是否有问题
ping 127.0.0.1 测试本机网络环境
ping 192.168.x.x
端口号:
逻辑端口
A:每个网络程序都至少会有一个逻辑端口
B:用于标示进程的逻辑地址,不同进程标示不一样;
C:有效端口:0~65535,其中0~1024系统使用或保留端口。
UDP和TCP协议:【规则】
UDP:
A:数据打包;
B:数据有限制;
C:面向无连接;
D:不可靠;
E:速度快
QQ聊天室(群聊)
TCP:
A:建立连接通道;
B:数据无限制;
C:面向连接(三次握手);
D:可靠;
E:速度慢
蓝牙,QQ单聊,打电话
【根据需求应用】
Socket编程:【套接字编程,网络编程】
为网络编程提供一种机制,包装了端口和IP地址
特点:
两端都有Socket;
网络通信其实就是socket间的通信;
数据在两个Socket间通过IO流传输
InetAddress:
没有构造方法
A:成员都是静态
B:返回InetAddress实例对象
成员方法:
获取本地主机:getLocalHost
获取任意主机:getByName(String ip)
主机名:getHostName
主机Ip地址:getHostAddress
UDP协议下编程:
创建Socket服务对象;DatagramSocket
创建数据,并把数据打包;DatagramPacket
发送数据;
关闭资源
注意:端口一定一致,
聊天室
【应用程序:网络编程,IO,多线程】
UDP
1.将数据源和目的封装成数据包中;
2.不需要建立连接;
3.每个数据报的大小在限制在64k;
4.因无连接,是不可靠协议;
5.不需要建立连接,速度快。
TCP
1.建立连接,形成传输数据的通道;
2.在连接中进行大数据量传输(数据无限制);
3.通过三次握手完成连接;
4.是可靠协议;
5.必须建立连接,效率会稍低。