黑马程序员技术交流社区

标题: 【石家庄校区】多线程&网络编程&反射 学习笔记 [打印本页]

作者: cyahua    时间: 2018-4-23 15:35
标题: 【石家庄校区】多线程&网络编程&反射 学习笔记
本帖最后由 小石姐姐 于 2018-4-26 14:32 编辑

多线程&网络编程&反射

多线程多线程的实现方式线程的生命周期                       +---------------------------+
                       |            阻塞            |
                       +--v----------------------^-+
                          |                      |
                          |解除阻塞          被阻塞|
    new                   |                      |
  +------+             +--v---+               +--^---+               +------+
  |      |   start()   |       >-------------->      |  线程执行结束   |      |
  | 创建  >------------>  就绪 |     CPU调度    | 运行 >---------------> 销毁  |
  |      |             |       <--------------<      |               |      |
  +------+             +------+               +------+               +------+线程之间的通信
网络网络通信三要素UDP和TCP的区别InetAddress概述和测试
java.net.InetAddress类: 用于表示IP地址对象 (InetAddress的实例包含 IP 地址,还可能包含相应的主机名)
UDP协议发送数据  
  // 1. 为发送端创建Socket对象(DatagramSocket)
  DatagramSocket datagramSocket = new DatagramSocket();
  // 2. 创建数据并打包
  DatagramPacket datagramPacket = new DatagramPacket(byte数组, 数组长度, InetAddress对象, 端口号);
  // 3. 发送数据
  datagramSocket.send(datagramPacket);
  // 4. 释放资源
  datagramSocket.close();UDP协议接收数据
  
  // 1. 创建接收端Socket对象:
  DatagramSocket datagramSocket = DatagramSocket(接收方端口号);
  // 2. 接收数据
  DatagramPacket datagramPacket = new DatagramPacket(byte数组, 数组长度);
  datagramSocket.receive(datagramPacket);                 // 该方法会阻塞等待接收数据
  // 3. 解析数据
  InetAddress inetAddress = datagramPacket.getAddress();  // 获取发送方IP地址
  byte[] bytes = datagramPacket.getData();                // 获取数据
  int dataLength = datagramPacket.getLength();            // 获取数据长度
  String s = new String(bytes, 0, dataLength);
  // 4. 输出数据
  System.out.println(s);
  // 5. 释放资源:
  datagramSocket.close();TCP协议发送数据
  
  // 1. 创建客户端Socket对象(建立连接)
  Socket socket = new Socket(InetAddress地址, 端口号);
  // 2. 获取输出流对象
  OutputStream outputStream = socket.getOutputStream();
  // 3. 发送数据
  outputStream.write(byte数组);
  // 4. 释放资源
  socket.close();TCP协议接收数据
  
  // 1. 创建服务端ServerSocket对象:
  ServerSocket serverSocket = new ServerSocket(端口号);  // 指定要监听的端口号
  // 2. 监听数据
  Socket socket = serverSocket.accept();                // 该方法会阻塞, 直到有客户端连接
  // 3. 获取输入流对象
  InputStream inputStream = socket.getInputStream();
  // 4. 获取数据
  int dataLength = inputStream.read(装数据的byte[]数组);
  String s = new String(byte[], 0, dataLength);
  // 5. 输出数据
  System.out.println(s);
  // 6. 释放资源:
  socket.close();
  serverSocket.close();反射获取字节码对象的3种方法
反射使用的相关类和方法JavaBeanBeanUtils工具类
BeanUtils类常用的3个方法










欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2