Skip to content

多线程编程

每个线程是 CPU 使用的一个基本单元;它包括线程 ID、程序计数器、寄存器组和堆栈。它与同一进程的其他线程共享代码段、数据段和其他操作系统资源

现代计算机运行的大多数应用软件都是多线程的。一个应用程序通常作为具有多个控制线程的一个进程来实现。例如,一个 Web 浏览器可能有一个线程来显示图像和文本,另一个线程从网络接收数据。一个字处理器可能有一个线程用于显示图形,另一个线程用于响应用户的键盘输入,还有一个线程在后台进行拼写和语法检查。应用程序也可以设计成利用多核系统的处理能力。这些应用程序可以在多处理核上并行执行多个 CPU 密集型的任务

线程池

线程池的主要思想是:在进程开始时创建一定数量的线程,并加到池中以等待工作。当服务器收到请求时,它会唤醒池内的一个线程(如果有可用线程),并将需要服务的请求传递给它。一旦线程完成了服务,它会返回到池中再等待工作。如果池内没有可用线程,那么服务器会等待,直到有空线程为止

线程池具有以下优点:

  • 用现有线程服务请求比等待创建一个线程更快
  • 线程池限制了任何时候可用线程的数量。这对那些不能支持大量并发线程的系统非常重要
  • 将要执行任务从创建任务的机制中分离出来,允许我们采用不同策略运行任务。例如,任务可以被安排在某一时间延迟后执行,或定期执行