tomcat网站的小问题,有关线程池

问题描述

我需要在服务器端一直维护一个线程池,用来专门处理用户提交的某一类型请求请问线程池的创建应该放在哪里?是写在监听方法contextInitialized中还是像数据库连接池一样写在配置文件中?应该怎么写再就是这种线程池一般是用java自带的还是tomcat的还是自己写比较好

解决方案

解决方案二:
自己顶一个。。。怎么没人回答呢
解决方案三:
线程池主要目的是什么?为什么一定要和当前项目绑定启动?(是否可以单独作为后台部署)
解决方案四:
比如说网站做一个评测系统,每提交一个请求,我就要运行一个评测程序来评测它。我希望用线程池来管理评测程序的运行单独作为后台部署应该怎么做?
解决方案五:
我比较笨,还是没弄清楚具体需求是啥--所谓的单独后台部署:单独写一个服务器监听线程,当有响应时开启一个响应线程去处理需要处理的事务.(可以控制响应线程数),其他地方只需要访问就可以了.线程池的话,现在xSocket好象不错.
解决方案六:
那我应该怎么向监听线程传递参数呢?
解决方案七:
我猜楼主的需求是这样的:有些客户端请求很耗时间,比如要10分钟。不可能让用户等10分钟来得到最后结果。于是,实现一个队列,用户提交的请求全放这个队列里。提示用户:结果出来了再给你说。然后开若干线程来处理队列的任务,处理完后再统治用户来看结果(比如发个短信邮件什么的)需求补充。这个队列里的任务,可以删除,重新排序,甚至终止当前正在处理的任务。
解决方案八:
引用6楼araychou的回复:

我猜楼主的需求是这样的:有些客户端请求很耗时间,比如要10分钟。不可能让用户等10分钟来得到最后结果。于是,实现一个队列,用户提交的请求全放这个队列里。提示用户:结果出来了再给你说。然后开若干线程来处理队列的任务,处理完后再统治用户来看结果(比如发个短信邮件什么的)需求补充。这个队列里的任务,可以删除,重新排序,甚至终止当前正在处理的任务。

up
解决方案九:
引用6楼araychou的回复:

我猜楼主的需求是这样的:有些客户端请求很耗时间,比如要10分钟。不可能让用户等10分钟来得到最后结果。于是,实现一个队列,用户提交的请求全放这个队列里。提示用户:结果出来了再给你说。然后开若干线程来处理队列的任务,处理完后再统治用户来看结果(比如发个短信邮件什么的)需求补充。这个队列里的任务,可以删除,重新排序,甚至终止当前正在处理的任务。

是不是
解决方案十:
引用6楼araychou的回复:

我猜楼主的需求是这样的:有些客户端请求很耗时间,比如要10分钟。不可能让用户等10分钟来得到最后结果。于是,实现一个队列,用户提交的请求全放这个队列里。提示用户:结果出来了再给你说。然后开若干线程来处理队列的任务,处理完后再统治用户来看结果(比如发个短信邮件什么的)需求补充。这个队列里的任务,可以删除,重新排序,甚至终止当前正在处理的任务。

对的。有什么处理办法么

时间: 2024-10-04 15:38:55

tomcat网站的小问题,有关线程池的相关文章

ava实现线程池原理:适用于电商网站之类的交互频繁的网站

线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务.线程池线程都是后台线程.每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中.如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙.如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值.超过最大值的线程可以排队,但他们要等到其他线程完成后才启动. 组成部分 1.线程池

关于线程池的小想法

问题描述 首先 吾辈先声明下 吾辈是菜菜, 所以大湿们觉得的那里说错了 尽量喷~~今天早上 吾辈蛋疼的看了下 Excutors 的源代码, 又看了下以前用到线程池的一些方法, 发现了一个小问题吾辈一直是先弄出个线程池, 然后玩命的在线程池里面死命的塞对象ExecutorService pool = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() + 1);pool.submit(new xRunnab

如何计算tomcat线程池大小?

背景 在我们的日常开发中都涉及到使用tomcat做为服务器,但是我们该设置多大的线程池呢?以及根据什么原则来设计这个线程池呢? 接下来,我将介绍本人是怎么设计以及计算的. 目标 确定tomcat服务器线程池大小 具体方法 众所周知,tomcat接受一个request后处理过程中,会涉及到cpu和IO时间.其中IO等待时,cpu被动放弃执行,其他线程就可以利用这段时间片进行操作. 所以我们可以采用服务器IO优化的通用规则: 线程大小 = ( (线程io时间 + 线程cpu)  / 线程cpu ti

Java创建线程池两种不同方法的比较

用java做抓取的时候免不了要用到多线程的了,因为要同时抓取多个网站或一条线程抓取一个网站的话实在太慢,而且有时一条线程抓取同一个网站的话也比较浪费CPU资源.要用到多线程的等方面,也就免不了对线程的控制或用到线程池.   我在做我们现在的那一个抓取框架的时候,就曾经用过java.util.concurrent.ExecutorService作为线程池,关于ExecutorService的使用代码大概如下: java.util.concurrent.Executors类的API提供大量创建连接池

从JDK源码角度看线程池原理

        "池"技术对我们来说是非常熟悉的一个概念,它的引入是为了在某些场景下提高系统某些关键节点性能,最典型的例子就是数据库连接池,JDBC是一种服务供应接口(SPI),具体的数据库连接实现类由不同厂商实现,数据库连接的建立和销毁都是很耗时耗资源的操作,为了查询数据库中某条记录,最原始的一个过程是建立连接.发送查询语句.返回查询结果.销毁连接,假如仅仅是一个很简单的查询语句,那么可能建立连接与销毁连接两个步骤就已经占所有资源时间消耗的绝大部分,如此低下的效率显然让人无法接受.针

论Java Web应用中调优线程池的重要性_java

不论你是否关注,Java Web应用都或多或少的使用了线程池来处理请求.线程池的实现细节可能会被忽视,但是有关于线程池的使用和调优迟早是需要了解的.本文主要介绍Java线程池的使用和如何正确的配置线程池. 单线程 我们先从基础开始.无论使用哪种应用服务器或者框架(如Tomcat.Jetty等),他们都有类似的基础实现.Web服务的基础是套接字(socket),套接字负责监听端口,等待TCP连接,并接受TCP连接.一旦TCP连接被接受,即可从新创建的TCP连接中读取和发送数据. 为了能够理解上述流

java concurrent包自带线程池和队列详细讲解

Java线程池使用说明一简介线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的.在jdk1.5之后这一情况有了很大的改观.Jdk1.5之后加入了java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用.为我们在开发中处理线程的问题提供了非常大的帮助.二:线程池线程池的作用:线程池作用就是限制系统中执行线程的数量.     根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果:少了浪费了系统资

100行Java代码构建一个线程池

在现代的操作系统中,有一个很重要的概念――线程,几乎所有目前流行的操作系统都支持线程,线程来源于操作系统中进程的概念,进程有自己的虚拟地址空间以及正文段.数据段及堆栈,而且各自占有不同的系统资源(例如文件.环境变量等等).与此不同,线程不能单独存在,它依附于进程,只能由进程派生.如果一个进程派生出了两个线程,那这两个线程共享此进程的全局变量和代码段,但每个线程各拥有各自的堆栈,因此它们拥有各自的局部变量,线程在UNIX系统中还被进一步分为用户级线程(由进程自已来管理)和系统级线程(由操作系统的调

C实现一个简单的线程池

//threadpool.h #ifndef __THREADPOOL_H__ #define __THREADPOOL_H__ #include <pthread.h> typedef void* (*task_fun)(void*); //用链表来维护等待任务 typedef struct threadtask { //任务的执行函数 task_fun task; //执行函数的参数 void* arg; //下一节点 struct threadtask* next; }THREAD_TA