Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

深入Hotspot源码与Linux内核理解NIO与Netty线程模型 PDF 下载


分享到:
时间:2021-03-15 10:04来源:http://www.java1234.com 作者:转载  侵权举报
深入Hotspot源码与Linux内核理解NIO与Netty线程模型 PDF 下载
失效链接处理
深入Hotspot源码与Linux内核理解NIO与Netty线程模型 PDF 下载


本站整理下载:
提取码:7hri 
 
 
相关截图:
 
主要内容:


1 package com.tuling.bio; 23 import java.io.IOException; 4 import java.net.ServerSocket; 5 import java.net.Socket; 67 public class SocketServer { 8 public static void main(String[] args) throws IOException { 9 ServerSocket serverSocket = new ServerSocket(9000); 10 while (true) { 11 System.out.println("等待连接。。"); 12 //阻塞方法 13 Socket clientSocket = serverSocket.accept(); 14 System.out.println("有客户端连接了。。"); 15 handler(clientSocket); 1617 /*new Thread(new Runnable() { 18 @Override 19 public void run() { 20 try { 21 handler(clientSocket); 22 } catch (IOException e) { 23 e.printStackTrace(); 24 } 25 } 26 }).start();*/ 27 } 28 } 2930 private static void handler(Socket clientSocket) throws IOException { 31 byte[] bytes = new byte[1024]; 32 System.out.println("准备read。。"); 33 //接收客户端的数据,阻塞方法,没有数据可读时就阻塞 34 int read = clientSocket.getInputStream().read(bytes); 35 System.out.println("read完毕。。"); 36 if (read != ‐1) {
图灵诸葛老师
37 System.out.println("接收到客户端的数据:" + new String(bytes, 0, read)); 38 } 39 clientSocket.getOutputStream().write("HelloClient".getBytes()); 40 clientSocket.getOutputStream().flush(); 41 } 42 } 431 //客户端代码 2 public class SocketClient { 3 public static void main(String[] args) throws IOException { 4 Socket socket = new Socket("localhost", 9000); 5 //向服务端发送数据 6 socket.getOutputStream().write("HelloServer".getBytes()); 7 socket.getOutputStream().flush(); 8 System.out.println("向服务端发送数据结束"); 9 byte[] bytes = new byte[1024]; 10 //接收服务端回传的数据 11 socket.getInputStream().read(bytes); 12 System.out.println("接收到服务端的数据:" + new String(bytes)); 13 socket.close(); 14 } 15 } 缺点: 1、IO代码里read操作是阻塞操作,如果连接不做数据读写操作会导致线程阻塞,浪费资源 2、如果线程很多,会导致服务器线程太多,压力太大,比如C10K问题 应用场景: BIO 方式适用于连接数目比较小且固定的架构, 这种方式对服务器资源要求比较高, 但程序简单易理解。 NIO(Non Blocking IO) 同步非阻塞,服务器实现模式为一个线程可以处理多个请求(连接),客户端发送的连接请求都会注册到多路复用器selector上,多路复用 器轮询到连接有IO请求就进行处理,JDK1.4开始引入。 应用场景: NIO方式适用于连接数目多且连接比较短(轻操作) 的架构, 比如聊天服务器, 弹幕系统, 服务器间通讯,编程比较复杂

 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐