Netty的server启动流程
2019-06-20 16:05:39   0  举报             
     
         
 Netty的server服务启动流程
    作者其他创作
 大纲/内容
 new NioEventLoopGroup()
  AbstractChannel #  register0(ChannelPromise promise)
  1
  3
  chooserFactory.newChooser(children)
  实际上就是Group管理的线程
  threadFactory.newThread(command).start();
  SingleThreadEventExecutor # runAllTasks(long timeoutNanos)
  AbstractNioChannel # doRegister()
  将channel注册到Selector,创建SelectionKey对象
  2
  SingleThreadEventExecutor # execute(Runnable task)
   new ThreadPerTaskExecutor(newDefaultThreadFactory())
  SingleThreadEventExecutor.this.run()
  Reacotor启动过程
  NioEventLoop #processSelectedKeys();
  executor:线程的管理类
  SingleThreadEventExecutor # safeExecute(task);
  NioEventLoop # processSelectedKeysOptimized();
  NioEventLoop # run()
  SingleThreadEventExecutor # startThread()
  NioEventLoop # select(wakenUp.getAndSet(false));
  Netty中对线程进行了封装。每个EventExecutor表示一个单独的线程,可以执行Runable任务,EventExecutorGroup相当于一个线程组,用于管理和分配一组EventExecutor。MultilthreadEventExecutorGroup是EventExecutorGroup的抽象实现
  ThreadPerTaskExecutor # execute(Runnable command)
   
 
 
 
 
  0 条评论
 下一页
  
   
   
   
   
  
  
  
  
  
  
  
  
 