网站首页 > 教程分享 正文
为了您更好的阅读互动体验,为了您及时看到更多内容,点个“关注”,我们每天为您更新技术知识、分享SpringBoot,Vue,hadoop,架构等,后续还会推出视频课程,基于ruoyi-cloud实现项目讲解!
Java NIO 的非阻塞模式是指,当对 I/O 操作进行请求时,如果 I/O 操作不能立即完成,系统会立即返回,这样程序就可以做其他事情了,而不需要等待 I/O 操作的完成。这种方式会大大提高系统的运行效率。
当我们使用 Java NIO 的 SocketChannel 来创建一个新的 socket 连接时,首先要做的是调用 SocketChannel 的 open 方法来创建一个新的 SocketChannel 对象。如下:
SocketChannel socketChannel = SocketChannel.open();
然后,我们需要将 SocketChannel 设置为非阻塞模式,这样在进行 I/O 操作时,就不会阻塞程序的执行了。设置非阻塞模式的方法是调用 SocketChannel 对象的 configureBlocking 方法,如下:
socketChannel.configureBlocking(false);
接下来,我们就可以使用这个 SocketChannel 对象来进行连接操作。连接操作的方法是调用 SocketChannel 对象的 connect 方法,这个方法需要一个 InetSocketAddress 对象作为参数,该对象表示你要连接的远程服务器的地址。如下:
socketChannel.connect(new InetSocketAddress("www.example.com", 80));
因为我们将 SocketChannel 设置为非阻塞模式,所以当我们调用 connect 方法时,如果连接还未建立,这个方法会立即返回,而不会等待连接的建立。为了知道连接何时建立,我们需要反复调用 SocketChannel 对象的 finishConnect 方法,这个方法会返回一个布尔值,说明连接是否已经建立。如下:
while (!socketChannel.finishConnect()) {
// 做其他事情
}
猜你喜欢
- 2024-12-25 MySQL数据查询太多会OOM吗? mysql为什么数据量多查询就慢
- 2024-12-25 一次Dubbo拥堵的分析 dubbo遇到的问题
- 2024-12-25 Java程序员使用JSSE实现SSL/TLS安全套接字
- 2024-12-25 阿瑟Java (44):HTTP、TCP/IP、Socket 的关联
- 2024-12-25 基于socket API之上的跨平台MQTT客户端源码分享
- 2024-12-25 Java编程-高并发情况下接口性能优化实践-提升吞吐量TPS
- 2024-12-25 解决QTcpSocket发送数据成功,但接收端接收不全的问
- 2024-12-25 在线客服(IM)系统源码分享 在线客服源码下载
- 2024-12-25 深入剖析阻塞式socket的timeout socket connect 阻塞
- 2024-12-25 推荐一个Java编写的长连接服务Netty-SocketIO
你 发表评论:
欢迎- 最近发表
-
- 免费10年VPS-serv00服务器,注册与自动化保号
- Consul微服务注册中心使用指南
- 谷歌云代理商:注册谷歌云服务器需要准备哪些资料?
- steam账号注册不了/注册失败?好用的解决方法看这里
- 微服务架构中的服务注册与发现有哪些?Zookeeper、Eu
- # 从浅入深 学习 SpringCloud 微服务架构(三)注册中心 Eureka(1)
- 一文深入理解AP架构Nacos注册原理
- 群晖NAS本地搭建NVIDIA v-GPU License Server 授权许可服务器的教程
- IDEA 2024解决We could not validate your license XX
- 保障数据完整性:深入解析Oracle数据库的主键和外键约束
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)