请问下老师服务端NioEventLoop启动为什么要用CAS启动一个线程

来源:4-6 NioEventLoop的启动

慕粉3520842

2018-06-25

http://img.mukewang.com/szimg/5b304313000100f508120140.jpg


这里为什么要用cas操作呢?服务端启动不是单线程环境吗,不存在并发情况 不需要cas操作把,另外想问下用netty和原生nio相比,性能差距有多少,为什么比原生nio高,具体优化在哪些方面呢。谢谢老师

写回答

1回答

闪电侠

2018-06-25

  1. 这里为什么要用cas操作呢?服务端启动不是单线程环境吗,不存在并发情况 不需要cas操作把

    因为NioEventLoop呢,他是可以给用户自己使用的,他暴露一个execute(Runable task)方法,如果多个线程拿到同一个EventLoop,同时执行这个execute方法,就重复启动这个NioEventLoop的底层的线程啦

  2. netty和原生nio相比,性能差距有多少,为什么比原生nio高,具体优化在哪些方面呢

    主要是reactor线程模型,其次在一些细节方面,比如对象池技术,FastThreadLocal技术,ByteBuf池化技术都做了很多优化,这些课程后面都有讲到的哦

0
0

Java读源码之Netty深入剖析

解析netty各大组件细节,百万级性能调优,设计模式实际运用

2334 学习 · 283 问题

查看课程