JGroups 4.0 的线程池将从 4 个减至 1 个

JGroups是一个可靠的群组通讯Java工具包。

JGroups 3.x 有 4 个线程池:

Regular thread pool: used for regular messages (default has a queue)

OOB thread pool: used for OOB messages (no queue)

Internal thread pool: used for JGroups internal messages only. The main raison d'etre for this pool was that internal messages such as heartbeats or credits should never get queued up behind other messages, and get processed immediately.

Timer thread pool: all tasks in a timer need to be executed by a thread pool as they can potentially block

但是 JGroups 4.0 将只有一个线程池处理规则,这个新的线程池没有队列,否则它添加任务时不会出现RejectedExecutionException,但简单的队列,并不是我们想要的内部消息或定时器任务。

这个新的线程池也有一个不能被改变的"abort"默认拒绝策略,只能用自定义池替换线程池。

这大大降低了配置的复杂性:从4个到1个线程池,这个新的线程池只公开最小线程,最大线程,空闲时间和启用的配置选项。

4.0 配置举例如下:

    thread_pool.enabled="true"
    thread_pool.min_threads="2"
    thread_pool.max_threads="8"
    thread_pool.keep_alive_time="5000"

文章转载自 开源中国社区[http://www.oschina.net]

时间: 2024-08-16 02:49:42

JGroups 4.0 的线程池将从 4 个减至 1 个的相关文章

Java基础-创建Java程序中的线程池

程序|创建 线程是Java的一大特性,它可以是给定的指令序列.给定的方法中定义的变量或者一些共享数据(类一级的变量).在Java中每个线程有自己的堆栈和程序计数器(PC),其中堆栈是用来跟踪线程的上下文(上下文是当线程执行到某处时,当前的局部变量的值),而程序计数器则用来跟踪当前线程正在执行的指令. 在通常情况下,一个线程不能访问另外一个线程的堆栈变量,而且这个线程必须处于如下状态之一: 1.排队状态(Ready),在用户创建了一个线程以后,这个线程不会立即运行.当线程中的方法start()被调

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

Linux线程池使用

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

线程池的原理及实现(转)

1.线程池简介:    多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力.        假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间.     如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能.                一个线程池包括以下四个基本组成部分:                1.线程池管理器(ThreadPool):用于创建并管理线

一个简单的线程池

最近自己,很烦所以超级久没学习了,今天趁着抗战七十周年放三天假,赶紧看下书. 废话不多说. 今天,介绍一个简单的线程池. 首先说明什么是线程池,线程池:是包含若干个线程,来处理多个任务的线程集合. 它的目的是用来处理,大量的相对短暂的任务. 这里我们先来解释下两个概念,什么叫大量呢?对于线程来说,需要线程数小于任务数,第二,短暂的任务是指,任务需要相对短暂,如果线程和主进程同周期,则不适合用线程池. 然后来说下CPU数和线程数的关系,如果你的任务主要是计算密集型任务 则:线程个数 = CPU个数

nginx线程池源码分析_nginx

周末看了nginx线程池部分的代码,顺手照抄了一遍,写成了自己的版本.实现上某些地方还是有差异的,不过基本结构全部摘抄. 在这里分享一下.如果你看懂了我的版本,也就证明你看懂了nginx的线程池. 本文只列出了关键数据结构和API,重在理解nginx线程池设计思路.完整代码在最后的链接里. 1.任务节点 typedef void (*CB_FUN)(void *); //任务结构体 typedef struct task { void *argv; //任务函数的参数(任务执行结束前,要保证参数

多线程之:模拟实现线程池的工作原理

[一]线程池存在的价值: ==>多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力.    ==>假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间. ==>如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能.   [二]合理利用线程池能够带来三个好处.  * 第一:降低资源消耗.通过重复利用已创建的线程降低线程创建和销毁造成的消耗. * 第二:提高响应

.NET4.0线程池的Cooperative Cancellation模式

刚装了VS2010RC版,体验一下.NET4.0线程池新增的Cooperative Cancellation模式. 用过.NET线程池的人都知道,一旦把要执行的代码交给线程池去执行后,我们 基本上就失去了代码在运行中的控制能力.比如,我们想在某个时刻取消这段代 码的执行,就得另想一个办法.随着.NET4.0到来,这个问题得到了解 决..NET4.0引入了一种新的设计模式---合作取消模式(Cooperative Cancellation). .NET4.0的System.Threading命名空

J2SE5.0中的线程缓冲 ---- 线程池

一.前言 用Java编写多线程程序已经是一个非常简单的事了,不过与其它多线程系统相比,一些高级特性在Java中仍然不具备,然而在J2SE5.0中这一切将会改变.J2SE5.0增加大量的线程相关类使得编写多线程程序更加容易! 二.线程池-Thread Pools 线程库的基本思想简单的讲就是,一个线程库中拥有一定数量的线程,当有任务要执行时,就从线程库中找一个空闲的线程来执行这个任务,任务执行完后,该线程返回线程库等待下一个任务;如果线程库中没有空闲的线程来执行该任务,这时该任务将要等待直到有一个