0 0

一个程序里,是不是只应该只有一个线程池?0

我现在用Netty+spring+Mybatis做了一个长连接服务端,内部有多处要执行短暂的并发任务,还需要做定时任务,我需要用到ExecutorService和ScheduledExecutorService两者,但是这两者貌似一个就是一个线程池,而且我试用线程的地方有多处,我有两个问题,一能否把他们统一成一个线程池,二是我是不是必须把这个线程池作为一个全局变量(静态)才能保证到处被调用?
2014年3月28日 09:28

6个答案 按时间排序 按投票排序

0 0

又看了一下API
Executors虽然实现线程池,但如果提交线程过多内存肯定会吃内存。利用底层ThreadPoolExecutor来实现,当队列满的时候自动阻塞。
http://heipark.iteye.com/blog/1393847这个博客讲了原理。
http://blog.163.com/nihaonihao1987@126/blog/static/111580868201151510233125/这个是spring中配置。

2014年3月29日 00:26
0 0

问题的关键不在于使用多少个线程池, 而在于实际有多少个线程.

虽然一般线程池都会只开一个.

但是你看netty源码, 应该就知道, 其他他使用好几个线程池的.

2014年3月28日 18:57
0 0

java代码的话就要设计全局。spring中通过配置ThreadPoolTaskExecutor也可以实现线程池,对应java中ThreadPoolExecutor,java中所有线程池底层都是ThreadPoolExecutor实现的。但手动实现ThreadPoolExecutor比较麻烦,Executors中已经对这些线程接口做了实现,帮助文档建议使用些类。

2014年3月28日 18:05
0 0

ScheduledExecutorService  继承ExecutorService 。都是接口啊、  
Executors.newScheduledThreadPool  这个就是线程池啊。 
ExecutorService es=Executors.newScheduledThreadPool 你可以用这个一个就行吧。
即可以调度
schedule方法。
submit方法就是运行线程呗。

2014年3月28日 15:35
0 0

看你任务的实时性啊,任务如果需要迅速得到响应那必须分开使用线程池啊

2014年3月28日 14:37
0 0

我觉得你分析的很好,到时候压力测试下,看看效果

2014年3月28日 09:41

相关推荐

    java线程池概念.txt

    只有当阻塞队列满了,如果还有任务添加到线程池的话,会尝试new 一个Thread的进行救急处理,立马执行对应的runnable任务;如果继续添加任务到线程池,且线程池中的线程数已经达到了maximumPoolSize,那么线程就会就...

    Java理论与实践:线程池与工作队列

    线程池远不是服务器应用程序内使用多线程的唯一方法。如同上面所提到的,有时,为每个新任务生成一个新线程是...然而,由于只有一个AWT线程,因此要在AWT线程中执行任务可能要花费相当长时间才能完成,这是不可取的。

    .Net开源线程池组件SmartThreadPool.zip

    (AppDomain)挂钩,一个AppDomain只有一个线程池。假如在线程池中执行了一个周期较长的任务,一直占用着其中一个线程,可能就会影响到 应用程序域中的其他程序的性能。例如,假如在Asp.Net的线程池中执行一个周期较长...

    在线程池中创建多少线程比较合理?

    在设置线程池线程个数的时候,经常会想到这个问题,是不是设置的线程数越多越好?理解这个问题之前我们要先清楚的知道我们为什么使用多线程。 为什么会使用多线程 使用多线程的主要目的我们应该都能回答的出来就是...

    .net 线程详解 基础篇

    * 所有进程使用一个共享的线程池,还是每个进程使用独立的线程池? * 为什么不要手动线程池设置最大值? * .Net线程池有什么不足? 同步 * CLR怎样实现lock(obj)锁定? * WaitHandle是什么,他和他的派生类怎么...

    权威.NET多线程详解(源码示例)

    • 所有进程使用一个共享的线程池,还是每个进程使用独立的线程池? • 为什么不要手动线程池设置最大值? • .Net线程池有什么不足? 同步 • CLR怎样实现lock(obj)锁定? • WaitHandle是什么,他和他的派生类怎么...

    .Net 多线程详解

    • 所有进程使用一个共享的线程池,还是每个进程使用独立的线程池? • 为什么不要手动线程池设置最大值? • .Net线程池有什么不足? 同步 • CLR怎样实现lock(obj)锁定? • WaitHandle是什么,他和他的派生类怎么...

    鱼刺类_线程池Ex的命令详解及框架构建-易语言

    ,向线程池中投递一个可执行的函数子程序指针,和投递任务_int()基本一模一样,在内部自动转换成指针地址到整数(子程序指针) 6. 投递任务_int()  向线程池中投递一个可执行的函数指针地址 7. 等待任务动态()  :就是...

    C#多线程学习之(四)使用线程池进行多线程的自动管理

    ThreadPool类提供一个由系统维护的线程池(可以看作一个线程的容器),该容器需要 Windows 2000 以上系统支持,因为其中某些方法调用了只有高版本的Windows才有的API函数。 将线程安放在线程池里,需

    米哈游笔试题目-Java方向.docx

    单例模式的线程安全日志记录器类:需要设计一个类,保证在多线程环境下只有一个实例存在,并能够正确记录日志信息。 并发安全的阻塞队列类:需要设计一个线程安全的队列类,支持多线程的插入和移除操作,能够正确...

    VC 多线程写的网络通信聊天程序.rar

    内含课程内容和讲义PPT,本实例主要通过演示多线程的应用,多线程应用中容易出现的问题,互斥对象的讲解等,比如如何采用互斥对象来实现多线程的同步,如何利用命名互斥对象保证应用程序只有一个实例运行,并使用多...

    thread-pool-dome.zip

    什么叫线程池,一般执行程序是不仅仅只有一个线程,如果没有线程池,那么每次我们都有去创建一个个线程来用

    JAVA面试题最全集

    编写代码实现一个线程池 40.描述一下JVM加载class文件的原理机制? 41.试举例说明一个典型的垃圾回收算法? 42.请用java写二叉树算法,实现添加数据形成二叉树功能,并以先序的方式打印出来. 43.请写一个java...

    ThreadAffinity:ThreadAffinityPool pool 线程池的扩展

    这个应用程序的主程序是:MainThreadPoolTest 使用无界缓冲区解决方案,这可能会造成 OOM,改进是使用有界队列,目前的方法是在可用的接口定义之上开发的,只有 poolsize 作为状态变量 使用 system.out.println ...

    操作系统相关的部分面试题

    需要用户释放使用权切换到其他协程,因此同一时间其实只有一个协程拥有运行权,相当于单线程的能力。 * 一个线程可以有多个协程,一个进程也可以有多个协程。 * 协程不被操作系统内核管理,而完全是由程序控制。线程...

    vc++ 应用源码包_1

    另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 ...

    hadoop中文文档

    5.2 Adaptive Revisit Host Queue 是Crawl URL的一个主要的队列,每个队列应该代表一个主机(虽然这不是必须的)。 5.3 Adaptive Revisit Queue List 管理着Adaptive Revisit Host Queue 组成的列表。 5.4 BDB ...

    vc++ 应用源码包_2

    另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 ...

    vc++ 应用源码包_6

    另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 ...

    vc++ 应用源码包_5

    另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 ...

Global site tag (gtag.js) - Google Analytics