线程池机制
不同的任务可以统一提交给线程池(ThreadPoolExecutor)托管,Executor负责系统资源的统一分配与管理,会维护一个允许同时运行的最大线程数。任务数若没有超过最大线程数,一旦加入线程池便会被创建执行;任务数超过最大线程数,则将会被放入阻塞队列中。当某一任务处于空闲态超过一定的时间周期时,线程池会挂起该线程。在操作系统层面,会将线程池中的线程分配给处理器执行。
何时应当创建新的线程
1、当两个操作可以基本并行,不存在前后依赖时(最常见);
2、轮询
需要不停地查看某一进程的的状态变量,观察是否出现变化,并据此做出不同响应。(也可选用观察者模式来实现)
3、两个操作分属串行的不同阶段,各操作均可分为细小的步骤重复进行。
例如:“接收信息并存入队列”与“读取数据并写入数据库”操作。虽然二者都涉及对同一个队列的操作,存在同步问题,但当队列中存在可读取数据时,读取操作不依赖于写入操作。因此可以分别建立“写入线程”和“读取线程”。
网友评论