`
sw1982
  • 浏览: 504626 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

线程池的用法

阅读更多

一。线程池的实例化

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 线程池用法实例.rar

    一个简单的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线程池创建、使用、终止等相关操作技巧与使用注意事项,需要的朋友可以参考下

    java 线程池常用方法

    java 线程池常用方法参考文档 线程池中各种方法的讲解,使用,例子

    浅谈Spring @Async异步线程池用法总结

    本篇文章主要介绍了浅谈Spring @Async异步线程池用法总结,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    C++线程池实现 vc2015编译

    C++线程池实现 vc2015编译

    四种Java线程池用法解析

    主要为大家解析四种Java线程池用法,内容详细,分析细致,感兴趣的小伙伴们可以参考一下

    Qt线程池+多线程使用

    保证线程安全的Qt线程池使用,线程任务可以和其他线程通信,使用场景:频繁操作的I/O操作或是耗时操作。

    Python 线程池用法简单示例

    本文实例讲述了Python 线程池用法。分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #! python3 ''' Created on 2019-10-2 @author: Administrator ''' from concurrent.futures import ...

    如何使用线程池

    以下示例显示如何使用线程池。首先创建 ManualResetEvent 对象,此对象使程序能够知道线程池何时运行完所有的工作项。接着,尝试向线程池添加一个线程。如果添加成功,则添加其余的线程(本例中为 4 个)。然后...

    C#线程池用法详细介绍

    在C#编程语言中,使用线程池可以并行地处理工作,当强制线程和更新进度条时,会使用内建架构的ThreadPool类,为批处理使用多核结构,这里我们来看在C#编程语言中一些关于来自System.Threading的ThreadPool的用法的...

    java线程池概念.txt

    1:必须明白为什么要使用线程池:(这点很重要)  a:手上项目所需,因为项目主要的目的是实现多线程的数据推送;需要创建多线程的话,那就要处理好线程安全的问题;因为项目需要,还涉及到排队下载的功能,所以就...

    VC线程池原理及实现方法

    讲述VC使用线程池的原理以及怎样创建一个通用线程池的方法

    C#Winform异步多线程和线程池集成的用法

    本程序详细介绍了线程和线程池的用法,使用多线程进行和异步编程实现数据库操作和日志的记录

    线程,线程池与Handler的用法

    子线程的开启,线程池种类的介绍,线程池的应用,子线程更新Handler的用法

    java线程池ThreadPoolExecutor类使用详解.docx

    而线程池不允许使用Executors去创建,而要通过ThreadPoolExecutor方式,这一方面是由于jdk中Executor框架虽然提供了如newFixedThreadPool()、newSingleThreadExecutor()、newCachedThreadPool()等创建线程池的方法,...

    jdbc线程池演示demo

    本实例采用c3p0作为线程池工具包,讲解了jdbc基本用法,同时给出了Oracle以及mysql增(单插入、批量插入)、删、查、改等功能,可以直接复制使用。

    线程池最简单用法以及许可证使用

    1、创建线程池。2、投递任务。不加许可情况下,投递任务时,调试输出 的任务号, 有时 会有重复,比如2个99, 或者 2个100。加了许可后,输出内容不会有重复。(个人推测是:调试输出命令,类似于打印机,属于公共...

Global site tag (gtag.js) - Google Analytics