Code Monkey home page Code Monkey logo

threadpoolhelp's Introduction

ThreadPoolHelp

ThreadPoolHelp是一款Android平台下简单易用的线程池管理工具,包大小只有9K,能满足常用的多线程管理需求

下载 ThreadPoolHelp-2.0.jar

简单用法

  • 使用默认线程池
new ThreadTaskObject() {
	@Override
	public void run() {
		//线程执行体	
	}
}.start();
  • 指定线程池

指定线程池newPool,该线程任务将在线程池newPool中运行。

new ThreadTaskObject("newPool") {
	@Override
	public void run() {
		//线程执行体	
	}
}.start();

以上用法能满足基本需求,如需要更加详细的配置,参考进阶用法

进阶用法

  • 创建一个可缓存线程池

该线程池的特点是,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。线程池为无限大,当执行第二个任务时第一个任务已经完成,会复用执行第一个任务的线程,而不用每次新建线程。

使用默认线程池

ThreadPoolHelp.Builder
.cached()
.builder()
.execute(new Runnable() {
	@Override
	public void run() {
		//线程执行体
	});

使用指定线程池,poolName为线程池名称

ThreadPoolHelp.Builder
.cached()
.name("poolName")
.builder()
.execute(new Runnable() {
	@Override
	public void run() {
		//线程执行体
	});
  • 创建一个定长线程池

该线程池的特点是,可控制线程最大并发数,超出的线程会在队列中等待。

使用默认线程池,size为固定线程池大小

ExecutorService executorService = ThreadPoolHelp.Builder
				  .fixed(size)
				  .builder();
executorService.execute(new Runnable() {
	@Override
	public void run() {
		//线程执行体
	});

使用指定线程池,poolName为线程池名称,size为固定线程大小

ExecutorService executorService = ThreadPoolHelp.Builder
				  .fixed(size)
				  .name("poolName")
				  .builder();
executorService.execute(new Runnable() {
	@Override
	public void run() {
		//线程执行体
	});
  • 创建一个单线程化的线程池

该线程池的特点是,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

使用 默认线程池

ThreadPoolHelp.Builder
.single()
.builder()
.execute(new Runnable() {
	@Override
	public void run() {
		//线程执行体
	});

使用指定线程池,poolName为线程池名称

ThreadPoolHelp.Builder
.single()
.name("poolName")
.builder()
.execute(new Runnable() {
	@Override
	public void run() {
		//线程执行体
	});
  • 创建一个定长线程池定时任务

该线程池的特点是,支持定时及周期性任务执行。

ScheduledExecutorService executorService = ThreadPoolHelp.Builder
					  .schedule(size)
					  .scheduleBuilder();
executorService.schedule(new Runnable() {
	@Override
	public void run() {
		//线程执行体
	}, 3000, TimeUnit.MILLISECONDS);
  • 创建一个自定义的线程池

该线程池的特点是,如果以上都不能满足需求,开发者可以根据需求自己设置参数。

ExecutorService executorService = ThreadPoolHelp.Builder
				  .custom(corePoolSize, 
					  maximumPoolSize, 
					  keepAliveTime, 
					  unit, 
					  workQueue)
				  .builder());
executorService.execute(new Runnable() {
	@Override
	public void run() {
		//线程执行体
	});

threadpoolhelp's People

Contributors

rohsuton avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

threadpoolhelp's Issues

Can't set the thread name?

ThreadPoolHelp.Builder
.cached()
.name("mythread-name")
.builder()
.execute(new Runnable() {
@OverRide
public void run() {
System.out.println("=====" +Thread.currentThread().getName());

The expected result is::=====mythread-name
The actual result is:=====pool-1-thread-1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.