`
bjmike
  • 浏览: 283938 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

自定义的ExcutorManager

 
阅读更多
/**
 * Copyright description
 */
package transfer;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.ThreadFactory;
//import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * To Add descript here
 *
 * @author lixm
 * @since 2011-10-18
 */
public class ExcutorManager {
	public ThreadPoolExecutor executor;
	private int maximumPoolSize = 105;
	private long keepAliveTime = 600*1000;
	private static ExcutorManager instance;
	
	public int getMaximumPoolSize() {
		return maximumPoolSize;
	}
	public long getKeepAliveTime() {
		return keepAliveTime;
	}
	public ThreadPoolExecutor getExecutor() {
		return executor;
	}
	public void doStart(){
		int numCpu = Runtime.getRuntime().availableProcessors();
		int corePoolSize = numCpu+1;
		int maximumPoolSize = getMaximumPoolSize();
		long keepAliveTime = getKeepAliveTime();
		TimeUnit unit = TimeUnit.SECONDS;
		BlockingQueue workQueue = new SynchronousQueue();
		ThreadFactory threadFacotry = new ThreadFactory(){
			private AtomicInteger accptorNum = new AtomicInteger(0);
			@Override
			public Thread newThread(Runnable r) {
				String currentGroupName = Thread.currentThread().
						getThreadGroup().getName();
				String name = new StringBuilder(currentGroupName).append
						(".Processor").append
						(accptorNum.getAndIncrement()).toString();
				System.out.println("name:["+name+"]");
				return new Thread(Thread.currentThread().getThreadGroup(),r,name);
			}
			
		};
		executor = new ThreadPoolExecutor(2,2,
				keepAliveTime,unit,workQueue,
				threadFacotry);
	}
	
	public void doStop(){
		executor.shutdown();
		executor = null;
	}
	
	public  static void  executor(Runnable r){
		if(instance == null){
			instance = new ExcutorManager();
			instance.doStart();
		}
		instance.getExecutor().execute(r);
	}
	
	public static void shutdown(){
		instance.doStop();
	}
	
}

分享到:
评论

相关推荐

    C# 自定义控件 自定义ComboBox

    自定义控件是C#编程中一个重要的概念,它允许开发者根据需求扩展或修改内置控件的功能和外观,以满足特定项目的需求。在本案例中,我们将深入探讨如何自定义ComboBox控件。 ComboBox控件是Windows Forms中一个非常...

    FreeSwitch完整的自定义模块定义和改善自定义事件的例子

    本篇文章将深入探讨如何定义和优化自定义模块,以及处理自定义事件。 首先,理解FreeSwitch模块的生命周期是至关重要的。一个模块通常包括加载、初始化、运行和卸载四个阶段。在加载阶段,模块被FreeSwitch核心加载...

    QT自定义窗口 自由拖动 自定义标题

    在QT编程中,自定义窗口是一项常见的需求,它允许开发者根据应用的需求来设计独特的界面元素和交互方式。本文将深入探讨如何在QT中创建自定义窗口,并实现自由拖动和自定义标题的功能。 首先,我们需要了解QT中的...

    C#自定义控件库

    "C#自定义控件库"是指使用C#语言编写的、由开发者自定义的控件集合,这些控件可以扩展.NET Framework的标准控件集,为用户提供更丰富的界面元素和功能。自定义控件是软件开发中的一个重要环节,特别是在UI设计和用户...

    freemarker 自定义freeMarker标签

    本篇将深入探讨如何自定义FreeMarker标签,以扩展其功能并适应特定项目需求。 首先,理解FreeMarker的默认标签语法至关重要。FreeMarker使用${...}表达式来插入变量,#{...}用于输出注释,以及、等控制结构进行条件...

    C# WinForm 自定义CheckBox

    本教程将深入讲解如何在WinForms中自定义CheckBox控件,以满足特定的界面或功能需求。 首先,自定义CheckBox控件主要是为了扩展其默认功能,比如改变其外观、添加额外的事件处理或者提供更复杂的交互逻辑。在VS2005...

    鸿蒙+自定义组件+实例代码

    鸿蒙自定义组件实例鸿蒙自定义组件实例鸿蒙自定义组件实例鸿蒙自定义组件实例鸿蒙自定义组件实例鸿蒙自定义组件实例鸿蒙自定义组件实例鸿蒙自定义组件实例鸿蒙自定义组件实例鸿蒙自定义组件实例鸿蒙自定义组件实例...

    springboot工程自定义response注解、自定义规范化返回数据结构

    本主题将深入探讨如何在Spring Boot工程中通过自定义response注解、利用Java反射机制、设置自定义拦截器以及实现WebMvcConfigurer接口来实现这一目标。 首先,我们来看自定义response注解。在Spring Boot中,可以...

    iOS、UITableViewCell、自定义

    本话题将深入探讨如何实现UITableViewCell的自定义,特别是实现等高的自定义。 一、UITableViewCell自定义基础 自定义UITableViewCell主要涉及以下几个方面: 1. 创建UITableViewCell子类:通过继承...

    c#自定义漂亮按钮

    在C#编程中,自定义用户控件是提高应用程序界面美观性和功能多样性的重要手段。本教程将基于给定的"C#自定义漂亮按钮"主题,深入讲解如何利用C#和Visual Studio 2010创建一个自定义的按钮控件。我们将主要探讨以下几...

    C# WinForm 自定义 RadioButton

    在C# WinForm应用开发中,自定义RadioButton控件是一种常见的需求,这通常涉及到扩展.NET Framework提供的默认RadioButton控件的功能,以满足特定的设计或交互需求。本教程将深入讲解如何在Visual Studio 2005及其更...

    C# 自定义用户控件(PictureBox)

    自定义用户控件是提升应用程序功能和界面个性化的重要手段。在这个场景中,我们关注的是一个特定的自定义控件,即基于PictureBox的扩展。PictureBox是.NET Framework提供的一个标准控件,用于显示图像,而自定义用户...

    android 自定义view及自定义属性

    在Android开发中,自定义View和自定义属性是提升应用个性化和功能扩展性的重要手段。本文将深入探讨这两个核心概念,以及如何在实际项目中应用它们。 ### 自定义View 自定义View允许开发者创建自己的视图组件,以...

    Arx创建自定义实体

    在AutoCAD平台上,开发者可以利用ObjectARX(Autodesk Reactor Extension)库来创建自定义实体,这是一种基于C++的编程接口,允许程序员深入到AutoCAD的内部工作流程,实现扩展功能和定制化操作。本篇文章将详细探讨...

    vb.net 自定义控件(含自定义对话框设置属性) 实例

    vb.net 自定义控件 自定义属性 UITypeEditor UI 类型编辑器 实例 提供一个示例 UITypeEditor,它使用 IWindowsFormsEditorService 显示用于用户输入的 Form。 IWindowsFormsEditorService 只能通过 PropertyGrid ...

    C#自定义控件之-自定义MessageBox

    在开发这些应用程序时,有时我们需要根据项目需求创建特定的用户界面元素,这正是自定义控件的作用所在。本主题将深入探讨如何在C#中自定义一个类似于系统默认`MessageBox`的控件。 `MessageBox`是.NET Framework...

    ios oc 自定义数字键盘keyboard带小数点可自定义按键

    这个自定义键盘的实现主要涉及到UIKeyboardType的扩展以及自定义UIView的使用。 首先,我们了解iOS系统键盘的默认类型。iOS提供了多种键盘类型,如UIKeyboardTypeASCIICapable、UIKeyboardTypeNumberPad等。其中,...

    MFC 自定义消息和自定义类

    在Microsoft Foundation Classes (MFC)库中,开发者可以利用自定义消息和自定义类来扩展框架的功能,以满足特定项目的需求。自定义消息是Windows消息系统的一部分,允许程序员定义自己的消息类型,而自定义类则提供...

    C#自定义控件.rar

    本资料包“C#自定义控件.rar”显然是关于如何在C#环境中创建和使用自定义控件的教程或示例代码。 自定义控件的创建通常分为几个步骤: 1. **基础类选择**:首先,你需要选择一个基础类来继承。这可以是系统提供的...

    3000个PS自定义形状

    在Photoshop(PS)这个强大的图像处理软件中,自定义形状是一个非常实用的功能,它提供了大量预先设计好的图形,用户可以方便地导入和使用这些形状,以提高创作效率。"3000个PS自定义形状"这个资源集合涵盖了丰富的...

Global site tag (gtag.js) - Google Analytics