多线程及网络编程
来源:互联网 发布:单片机isp程序下载接口 编辑:程序博客网 时间:2024/05/17 07:24
多线程
进程:一个正在运行的程序
线程:进程里的一条命令或者一个任务
在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:唤醒所有等待的线程,包括自己
网络编程:
UDP与TCP:
UDP:不需要建立连接,发送大小限制在64KB以内,不安全但效率高,易丢包
TCP:需要建立连接(进行三次握手),效率低但安全
InetAddress类:
InetAddress表示互联网协议地址(IP),包含各种获取主机名和IP地址的方法
端口:
端口是每一个程序的出入口,是虚拟的概念,通过端口,可以在一个主机上运行多个应用程序
TCP的简单建立流程:
Client:
新建Socket对象
获取输出流进行发送
卸载流
获取输入流接收服务器返回的数据
卸载流
Sever:
新建SeverSocket对象
通过SeverSocket对象的accept方法获取Socket对象
获取输入流接收客户端信息
卸载流
获取输出流发送信息给客户端
卸载流
UDP通信:
使用DatagramSocket和DatagramPacket进行通信
新建DatagramSocket对象
新建DatagramPacket包,将字节数组传入包中
使用DatagramSocket的send方法发送
再次新建DatagramPacket包
使用DatagramSocket的receive方法接收发来的包
- 多线程及网络编程
- 多线程网络编程
- 多线程和网络编程
- java网络编程、多线程
- 多线程网络编程
- C++多线程网络编程
- 多线程与网络编程
- 网络编程基础--多线程
- java 多线程网络编程
- Python--多线程网络编程
- 网络编程和多线程
- socket网络编程多线程
- day_06_多线程、网络编程
- 多线程和网络编程
- 多线程,GUI,Socket网络编程
- windows多线程和网络编程
- linux网络多线程编程实例
- ios 网络编程总结-多线程
- 8.1 Noise and Probabilistic Target
- 所有网站都通用的自定义弹出框alert
- Git 工作环境初始化
- Tcpdump
- Mr. Kitayuta's Colorful Graph CodeForces
- 多线程及网络编程
- MySQL--操作简记(正则表达式进行搜索)
- 算法竞赛入门经典(第2版)-刘汝佳-第六章解题源码(C++语言)(部分)
- 快速排序的最早划分方法:Hoare划分
- 图片轮播
- 关于SimpleHTTPServer.py 模块
- Java面试题--字符串截取(1.1)
- CSU1989-古怪的行列式-模拟
- 技术日记