java多线程以及UPD编程

回顾网络编程(前面只讲了基于TCP/IP协议编程常用的还有URL编程(自行了解下)和UDP编程(使用DatagramPacket存储发送/接收数据)操作大同小异)

 //发送端
    @Test
    public void sender() throws IOException {
        DatagramSocket socket = new DatagramSocket();
        byte[] arr="我是一个UDP数据".getBytes(StandardCharsets.UTF_8);
        DatagramPacket data = new DatagramPacket(arr,0, arr.length, InetAddress.getLocalHost(),8888);
        socket.send(data);
        socket.close();


    }
    //接收端
    @Test
    public void reciver() throws IOException {
        DatagramSocket data = new DatagramSocket(8888);
        byte[] arr=new byte[1024];
        DatagramPacket p = new DatagramPacket(arr,0,arr.length);
        data.receive(p);
        System.out.println(new String(p.getData(),0, p.getLength()));
        data.close();
    }


ServerSocket: 服务端类(端口号)
Socket: 客户端类(服务端IP 端口号)

IP地址:               0-255.0-255.0-255.0-255
    什么是IP地址: 由4段长度为1个字节(8位bit)的十进制数字组成的
    IP的作用: 逻辑的标识网络中的一台电脑(无线路由)
    IPv4 2011年已经用尽
    win7 设置多了IPv6(世界上的每粒沙子都可以分配一个地址)
    
端口号:                 
    什么是端口号: 0-65535的范围数字
    用来区别一台电脑中的不同软件的标识号
    端口号越少越好
    0-1023系统保留(开发者不设置)
    1024-65535是程序员用的 
    
-------------------------多线程
刷牙洗脸5分钟 烧个开水5分钟 煮蛋器煮鸡蛋3分钟
单线程 : 13分钟
多线程 : 5分钟(打个比方)

但是上面3个事情是可以同时进行的, 理论上说可以用X分钟解决(多线程)
举例: 电脑可以同时听歌, 聊天, 看视频, 浏览网站....
举例: 银行排队处理业务


Java语言的另一个特性就是支持多线程编程, 在了解多线程之前
首先需要了解三个概念: 什么是程序, 什么是进程, 什么是线程 ?

程序 : 程序是硬盘上静态的代码集合体(为完成某个任务使用某种语言编写的指令集合
进程 : 当程序一旦运行, 就会加载到内存中, 随后交给CPU处理
           系统为其分配资源的话, 那么就变成了进程, 一个程序有多个进程(可以简单的理解为运行中的程序)
线程 : 线程是存在与进程中的, 是进程中额外的执行代码, 一个进程中又有多个线程(进程中的一条执行路径

单线程: 同一时间程序只能做一件事(早期的DOS系统, 只能运行1个软件)
多线程: Java程序的特点之一, 支持多线程, 在同一时间有多段代码在执行

实现多线程有四种途径:
1. 继承java.lang.Thread类: 它是一个线程类, 凡是需要执行多线程的类都需要继承它
    准备执行某个线程的时候, 调用start()方法
2. 实现java.lang.Runnable接口: 解决Java的软肋(单继承)
    重写run()方法
    new Thread(new Runnable实现类()).start()

3.实现Callable<T>接口:比较常用因为可以抛出异常和返回值,使用FutureTask接收

4.线程池:开发常用(Executors.newXxx)根据业务需求创建线程池

网络编程结合多线程

数据通信中分为3种通信方式:
1. 单工: 永远只能在一个方向上传递数据(广播)
2. 双工
    半双工 : 可以传递在两个方向上, 但是同一时间只能实现一个方向(对讲机)
    全双工 : 可以同时在两个方向上传递数据(电话)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值