zoukankan      html  css  js  c++  java
  • 7 EventLoop 和 线程模型

     这一章需要JUC相关的知识。

    事件/任务的执行顺序 事件和任务是以先进先出(FIFO)的顺序执行的。这样可以通过保证字

    节内容总是按正确的顺序被处理,消除潜在的数据损坏的可能性。

    我们之前已经阐明了不要阻塞当前I/O 线程的重要性。我们再以另一种方式重申一次:“永

    远不要将一个长时间运行的任务放入到执行队列中,因为它将阻塞需要在同一线程上执行的任何

    其他任务。”如果必须要进行阻塞调用或者执行长时间运行的任务,我们建议使用一个专门的

    EventExecutor。(见6.2.1 节的“ChannelHandler 的执行和阻塞”)。

    EventLoopGroup 负责为每个新创建的Channel 分配一个EventLoop。在当前实现中,
    使用顺序循环(round-robin)的方式进行分配以获取一个均衡的分布,并且相同的EventLoop
    可能会被分配给多个Channel。(这一点在将来的版本中可能会改变。)
    一旦一个Channel 被分配给一个EventLoop,它将在它的整个生命周期中都使用这个
    EventLoop(以及相关联的Thread)。请牢记这一点,因为它可以使你从担忧你的Channel-
    Handler 实现中的线程安全和同步问题中解脱出来。
    另外,需要注意的是,EventLoop 的分配方式对ThreadLocal 的使用的影响。因为一个
    EventLoop 通常会被用于支撑多个Channel,所以对于所有相关联的Channel 来说,
    ThreadLocal 都将是一样的。这使得它对于实现状态追踪等功能来说是个糟糕的选择。然而,
    在一些无状态的上下文中,它仍然可以被用于在多个Channel 之间共享一些重度的或者代价昂
    贵的对象,甚至是事件。

     

     

  • 相关阅读:
    HDU 1863 畅通工程(并查集)
    HDU 1232 畅通工程
    洛谷 1162 填涂颜色 (dfs,染色法)
    HDU 2689 sort it(树状数组 逆序数)
    mod_js.so下载 转自网络
    The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
    B计划 第七周
    B计划 第六周
    B计划 第五周
    B计划 第四周(开学第一周)
  • 原文地址:https://www.cnblogs.com/lakeslove/p/13081812.html
Copyright © 2011-2022 走看看