zoukankan      html  css  js  c++  java
  • 线程池

    1. 什么是线程池?

        顾名思义,存放线程的一个池子。

    2.怎么设计一个线程池

        (1) 新建一个数组,创建一堆线程存放进去;

        (2) 线程池中的线程来处理任务,处理完成后回收线程而不是销毁线程;

        (3) 设计等待队列来存放来不及处理的任务;

        (4) 拒绝策略

    一般一个简单线程池至少包含下列组成部分。

    1. 线程池管理器(ThreadPoolManager):用于创建并管理线程池
    2. 工作线程(WorkThread): 线程池中线程
    3. 任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行。
    4. 任务队列:用于存放没有处理的任务。提供一种缓冲机制

    后来才发现线程池其实是这样的一个流程:

    1. 创建线程池内所需的线程数量,并指定一个统一的函数,比如work();
    2. work()主动任务队列里找任务做,如果空的话则阻塞。
    3. 任务可以是不同的对象,但是他们提供统一的任务处理接口,比如process();可以用模板来增加扩展性。
    4. work()函数取来任务对象,然后调用process()就行了。
    5. 当然还要涉及任务队列的同步互斥问题。
  • 相关阅读:
    LeetCode:Remove Nth Node From End of List
    LeetCode:Swap Nodes in Pairs
    LeetCode:Merge Two Sorted Lists
    LeetCode:Maximum Subarray
    LeetCode:Linked List Cycle
    LeetCode:Search Insert Position
    LeetCode:Roman to Integer
    算法程序设计题语言类笔记
    我的小游戏之2048
    LeetCode:Best Time to Buy and Sell Stock II
  • 原文地址:https://www.cnblogs.com/Annetree/p/13626349.html
Copyright © 2011-2022 走看看