多线程及网络编程

本文介绍Java中多线程的基本概念与实现方式,包括线程的状态、同步机制及线程间的通信,并探讨了网络编程的基础知识,如TCP与UDP的区别及简单的通信流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多线程

进程: 一个正在运行的程序

线程: 进程里的一条命令或者一个任务

 

java中创建多线程的方法:

       1,继承Thread,重写run方法

       优点: 可以直接通过start方法启动线程,

       2,实现Runnable接口实现run方法

优点: 可以取消占用extends关键字, interface可以多实现, 可以实现资源共享, 但需要创建Thread类并将其传入调用start方法才能运行

 

当多个线程同时访问一个资源时,常常会引起并发问题,因此需要使用线程同步来解决安全问题

线程同步synchronized

线程同步的前提:
       1,
必须有两个或者两个以上的线程

2,多线程使用统一资源

3,必须保证同步中只能有一个线程在运行

使用synchronized同步线程时,既可以同步对象,亦可以同步方法

 

线程的五个状态:

       新生,就绪,运行,阻塞,死亡

 

可以使进程进入阻塞状态的方法:

       Sleep()睡眠,时间到后会自动唤醒

       Wait()等待,需要notify方法唤醒

       Join():加入,可以使其他进程进入阻塞状态

 

线程通信:

       Object类中拥有的方法: wait()/notify()/notifyAll()用于解决线程间的通信问题

       Wait():使当前线程等待,进入阻塞状态

       Notify():唤醒其他等待的线程,不能唤醒自己

       NotifyAll:唤醒所有等待的线程,包括自己

 

 

网络编程:

 

UDPTCP:

UDP: 不需要建立连接,发送大小限制在64KB以内,不安全但效率高,易丢包

TCP: 需要建立连接(进行三次握手),效率低但安全

 

InetAddress:

       InetAddress表示互联网协议地址(IP),包含各种获取主机名和IP地址的方法

 

端口:

       端口是每一个程序的出入口,是虚拟的概念,通过端口,可以在一个主机上运行多个应用程序

 

TCP的简单建立流程:

       Client:

              新建Socket对象

              获取输出流进行发送

              卸载流

              获取输入流接收服务器返回的数据

              卸载流

       Sever:

              新建SeverSocket对象

              通过SeverSocket对象的accept方法获取Socket对象

              获取输入流接收客户端信息

              卸载流

              获取输出流发送信息给客户端

              卸载流

 

UDP通信:

       使用DatagramSocketDatagramPacket进行通信

              新建DatagramSocket对象

              新建DatagramPacket,将字节数组传入包中

              使用DatagramSocketsend方法发送

              再次新建DatagramPacket

              使用DatagramSocketreceive方法接收发来的包

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值