第十五章:选择正确的线程模型

本章介绍

  • 线程模型(thread-model)
  • 事件循环(EventLoop)
  • 并发(Concurrency)
  • 任务执行(task execution)
  • 任务调度(task scheduling)

    线程模型定义了应用程序或框架如何执行你的代码,选择应用程序/框架的正确的线程模型是很重要的。Netty提供了一个简单强大的线程模型来帮助我们简化代码,Netty对所有的核心代码都进行了同步。所有ChannelHandler,包括业务逻辑,都保证由一个线程同时执行特定的通道。这并不意味着Netty不能使用多线程,只是Netty限制每个连接都由一个线程处理,这种设计适用于非阻塞程序。我们没有必要去考虑多线程中的任何问题,也不用担心会抛ConcurrentModificationException或其他一些问题,如数据冗余、加锁等,这些问题在使用其他框架进行开发时是经常会发生的。
    
    读完本章就会深刻理解Netty的线程模型以及Netty团队为什么会选择这样的线程模型,这些信息可以让我们在使用Netty时让程序由最好的性能。此外,Netty提供的线程模型还可以让我们编写整洁简单的代码,以保持代码的整洁性;我们还会学习Netty团队的经验,过去使用其他的线程模型,现在我们将使用Netty提供的更容易更强大的线程模型来开发。
    
    尽管本章讲述的是Netty的线程模型,但是我们仍然可以使用其他的线程模型;至于如何选择一个完美的线程模型应该根据应用程序的实际需求来判断。
    
    本章假设如下:
    
  • 你明白线程是什么以及如何使用,并有使用线程的工作经验;若不是这样,就请花些时间来了解清楚这些知识。推荐一本书:Java并发编程实战。

  • 你了解多线程应用程序及其设计,也包括如何保证线程安全和获取最佳性能。
  • 你了解java.util.concurrent以及ExecutorService和ScheduledExecutorService。

results matching ""

    No results matching ""