一。线程池的实例化
ExecutorService pool = Executors.newFixedThreadPool(10);
二。线程组的概念
就是将n个线程归到某一类总控开关下。 我这里使用的是list结构,当然JDK的ThreadGroup也是可行。
//http发送线程组
public static List<HttpSender> httpSendThreadGroup = new ArrayList<HttpSender>();
for(int i=0;i<10;i++) {
HttpSender httpSend = new HttpSender();
httpSend.setName("Thread:HttpSender-"+i);
httpSendThreadGroup.add(httpSend);
httpSend.start();
}
三。线程池
1.先演示一种用法: 大小为10的线程池,丢进去10个常驻线程
(也就是run方法里面做无限循环)
try {
httpSendExecutor = Executors.newFixedThreadPool(10);
for(int i=0;i<10;i++){
httpSendExecutor.execute(new HttpSender());
}
} catch (Exception e) {
logger.error("HttpSender start error!", e);
}
那么这种用法,线程池的特性其实得不到体现。跟上面描述的线程组,就是一个概念了。
2. JDK演示的一种用法,
* try {
* for (;;) {
* pool.execute(new Handler(serverSocket.accept()));
* }
* } catch (IOException ex) {
* pool.shutdown();
* }
这里Handle是非常驻线程
,即一个线程的run方法,只处理一次accept,然后线程退出。这里是无限向pool提交线程,由线程池来调度
那么问题就出来了: 是常驻线程无限循环去做job好,还是由线程池无限支持新线程做job然后销毁比较好呢??
暂时哥也没啥答案。。一切敬请期待把,想法子做个测试
分享到:
相关推荐
一个简单的Delphi mcpage 线程池用法实例,花了一些时间写了这个例子,帮助新手理解mcpage 线程池的各种用法。
本Demo用代码模拟了四大线程池的使用方法,分析了各线程池的特点
按先后顺序执行线程 public static void main(String[] args) { ExecutorService t = Executors.newSingleThreadExecutor(); for (int i = 0; i ; i++) { t.submit(new AA(i));... System.out.println(...
主要介绍了Java线程池用法,结合具体案例形式分析了java线程池创建、使用、终止等相关操作技巧与使用注意事项,需要的朋友可以参考下
java 线程池常用方法参考文档 线程池中各种方法的讲解,使用,例子
本篇文章主要介绍了浅谈Spring @Async异步线程池用法总结,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
C++线程池实现 vc2015编译
主要为大家解析四种Java线程池用法,内容详细,分析细致,感兴趣的小伙伴们可以参考一下
保证线程安全的Qt线程池使用,线程任务可以和其他线程通信,使用场景:频繁操作的I/O操作或是耗时操作。
本文实例讲述了Python 线程池用法。分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #! python3 ''' Created on 2019-10-2 @author: Administrator ''' from concurrent.futures import ...
以下示例显示如何使用线程池。首先创建 ManualResetEvent 对象,此对象使程序能够知道线程池何时运行完所有的工作项。接着,尝试向线程池添加一个线程。如果添加成功,则添加其余的线程(本例中为 4 个)。然后...
在C#编程语言中,使用线程池可以并行地处理工作,当强制线程和更新进度条时,会使用内建架构的ThreadPool类,为批处理使用多核结构,这里我们来看在C#编程语言中一些关于来自System.Threading的ThreadPool的用法的...
1:必须明白为什么要使用线程池:(这点很重要) a:手上项目所需,因为项目主要的目的是实现多线程的数据推送;需要创建多线程的话,那就要处理好线程安全的问题;因为项目需要,还涉及到排队下载的功能,所以就...
讲述VC使用线程池的原理以及怎样创建一个通用线程池的方法
本程序详细介绍了线程和线程池的用法,使用多线程进行和异步编程实现数据库操作和日志的记录
子线程的开启,线程池种类的介绍,线程池的应用,子线程更新Handler的用法
而线程池不允许使用Executors去创建,而要通过ThreadPoolExecutor方式,这一方面是由于jdk中Executor框架虽然提供了如newFixedThreadPool()、newSingleThreadExecutor()、newCachedThreadPool()等创建线程池的方法,...
本实例采用c3p0作为线程池工具包,讲解了jdbc基本用法,同时给出了Oracle以及mysql增(单插入、批量插入)、删、查、改等功能,可以直接复制使用。
1、创建线程池。2、投递任务。不加许可情况下,投递任务时,调试输出 的任务号, 有时 会有重复,比如2个99, 或者 2个100。加了许可后,输出内容不会有重复。(个人推测是:调试输出命令,类似于打印机,属于公共...