博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Netty&Jdk的Selector对比
阅读量:6347 次
发布时间:2019-06-22

本文共 941 字,大约阅读时间需要 3 分钟。

  hot3.png

Java

Java NIO根据操作系统不同, 针对nio中的Selector有不同的实现:

  • macosx
  • solaris
  • Linux: 或 
  • windows

所以毋须特别指定, Oracle jdk会自动选择合适的Selector。 如果想设置特定的Selector,可以属性: 

-Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider

Netty

自4.0.16起, Netty为Linux通过JNI的方式提供了.

使用native socket transport很简单,只需将相应的类替换即可。

  • NioEventLoopGroup → EpollEventLoopGroup
  • NioEventLoop → EpollEventLoop
  • NioServerSocketChannel → EpollServerSocketChannel
  • NioSocketChannel → EpollSocketChannel

如果使用maven, 加入相应的网依赖:

io.netty
netty-transport-native-epoll
${project.version}
${os.detected.classifier}

既然如上面所说, Oracle JDK在Linux已经默认使用epoll方式, 为什么netty还要提供一个基于epoll的实现呢?

这是上的一个问题。 Netty的核心开发者 Norman Maurer这么说的:

  • Netty的 epoll transport使用 epoll edge-triggered 而 java的 nio 使用 level-triggered.
  • 另外netty epoll transport 暴露了更多的nio没有的配置参数, 如 TCP_CORK, SO_REUSEADDR等等

转载于:https://my.oschina.net/mywiki/blog/1538494

你可能感兴趣的文章
Mysql基准测试
查看>>
Session 撰改演示
查看>>
Java容器使用总结
查看>>
【转】python3 发邮件实例(包括:文本、html、图片、附件、SSL、群邮件)
查看>>
用R分析时间序列(time series)数据
查看>>
C#各种扩展名文件存入sql server数据库及读取到本地文件
查看>>
机器学习——BP神经网络模型
查看>>
Volley请求
查看>>
网站字体渲染过程
查看>>
Kafka项目实战-用户日志上报实时统计之应用概述
查看>>
Android自定义Dialog(美化界面)
查看>>
SpriteBuilder中CCMotionStreak提示图片文件找不到
查看>>
抽象数据类型(ADT)入门(一)
查看>>
Reading List 2015-03
查看>>
Java并发结构
查看>>
深入理解Java内存模型(二)——重排序
查看>>
JBPM4.4(1)-简单工程的搭建
查看>>
插件化研究代Activity注册
查看>>
【SQL 学习】case 表达式
查看>>
数据库设计原则
查看>>