多线程及网络编程

来源:互联网 发布:单片机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:唤醒所有等待的线程,包括自己

 

 

网络编程:

 

UDPTCP:

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

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

 

InetAddress:

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

 

端口:

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

 

TCP的简单建立流程:

      Client:

             新建Socket对象

             获取输出流进行发送

             卸载流

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

             卸载流

      Sever:

             新建SeverSocket对象

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

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

             卸载流

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

             卸载流

 

UDP通信:

      使用DatagramSocketDatagramPacket进行通信

             新建DatagramSocket对象

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

             使用DatagramSocketsend方法发送

             再次新建DatagramPacket

             使用DatagramSocketreceive方法接收发来的包

 

原创粉丝点击