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

多线程工具类ThreadPoolExecutor

阅读更多
当然你可以编写自己的线程连接池来控制线程,但是java在1.5里已经提供了一个java.util.concurrent.ThreadPoolExecutor的类,这个类已经基本
实现了线程池的功能。
public class TaskExecutorPool {
public static ThreadPoolExecutor taskPool;

         static{
             taskPool=
                 new ThreadPoolExecutor(1, 10, 5, TimeUnit.SECONDS,
    new ArrayBlockingQueue<Runnable>(50),
    new ThreadPoolExecutor.CallerRunsPolicy());
         }
}
比如有public class TestThread extends Thread
可以通过TaskExecutorPool.taskPool.execute(new TestThread ())
通过构造函数来控制线程池


public ThreadPoolExecutor(int corePoolSize,
           int maximumPoolSize,
           long keepAliveTime,
           TimeUnit unit,
           BlockingQueue<Runnable> workQueue,
           ThreadFactory threadFactory,
           RejectedExecutionHandler handler)用给定的初始参数创建新的 ThreadPoolExecutor。

参数:
corePoolSize - 池中所保存的线程数,包括空闲线程。
maximumPoolSize - 池中允许的最大线程数。
keepAliveTime - 当线程数大于核心时,此为终止前多余的空闲线程等待新任务的最长时间。
unit - keepAliveTime 参数的时间单位。
workQueue - 执行前用于保持任务的队列。此队列仅保持由 execute 方法提交的 Runnable 任务。
threadFactory - 执行程序创建新线程时使用的工厂。
handler - 由于超出线程范围和队列容量而使执行被阻塞时所使用的处理程序。
抛出:
IllegalArgumentException - 如果 corePoolSize 或 keepAliveTime 小于 0,或者 maximumPoolSize 小于等于 0,或者 corePoolSize 大于 maximumPoolSize。
NullPointerException - 如果 workQueue、threadFactory 或 handler 为 null。

PS:值得注意的几个地方就是maximumPoolSize  设置符合需求,预估出最大可能存在的阻塞队列 写到ArrayBlockingQueue<Runnable>的参数里
分享到:
评论

相关推荐

    多线程断点续传工具类

    "多线程断点续传工具类"通常指的是一个Java类,该类设计用于实现文件传输时的多线程功能,并且能够从上次中断的地方继续下载或上传,这在大文件传输中非常有用,因为它可以提高速度并避免因网络问题导致的传输失败。...

    Java实现的多线程下载工具

    Java实现的多线程下载工具是一种利用Java编程语言来提高文件下载效率的技术。在传统的单线程下载方式中,文件的下载过程由一个线程执行,可能会受到网络波动、服务器响应速度等因素的影响,导致下载速度慢且不稳定。...

    java实现多线程文件传输

    9. **并发工具类**:`CountDownLatch`、`CyclicBarrier`和`Semaphore`等并发工具类可以帮助控制线程的启动和同步,提高多线程操作的协调性。 10. **安全性**:在多线程环境下,文件操作需注意文件锁,避免同一时刻...

    现代多线程 JAVA和c++多线程实现 测试和调试

    此外,JAVA还提供了`ExecutorService`和`Future`接口,以及`ThreadPoolExecutor`、`ScheduledThreadPoolExecutor`等工具类,用于更高级的线程管理和调度。 C++的多线程支持则依赖于C++11及更高版本引入的`&lt;thread&gt;`...

    多线程终极案例程序(多线程进阶)

    Java提供了`BlockingQueue`、`CountDownLatch`、`CyclicBarrier`和`Semaphore`等工具类,它们可以用于控制线程间的协作。例如,士兵线程可能需要在防御塔准备好后才能开始攻击,这可以通过`CountDownLatch`来实现。 ...

    多线程demo程序-轻松掌握多线程技术

    在编程领域,多线程是实现并发执行任务的关键技术,特别是在服务器端开发和高并发应用中,多线程能够充分利用CPU资源,提高程序的运行效率。这个名为"多线程demo程序-轻松掌握多线程技术"的项目,旨在帮助开发者理解...

    java多线程设计模式_java_设计模式_多线程_多线程课题_

    Java提供了一些线程安全的集合类,如ConcurrentHashMap、CopyOnWriteArrayList和CopyOnWriteArraySet,它们在多线程环境下提供了高并发的访问性能。 九、死锁检测与避免 死锁是多线程编程中的常见问题,两个或多个...

    java多线程文件传输

    4. **并发工具类** - **CountDownLatch**:允许一个线程等待其他线程完成操作,常用于多线程并发测试。 - **CyclicBarrier**:允许多个线程等待直到达到某个屏障点再一起继续执行。 - **Semaphore**:信号量,...

    JAVA多线程编程技术PDF

    总结起来,“JAVA多线程编程技术PDF”涵盖了多线程的基本概念、同步机制、线程通信、死锁避免、线程池以及线程安全的集合类等内容。通过深入学习这份资料,开发者可以全面掌握Java多线程编程技术,提升程序的并发...

    java多线程查询数据库

    这个文件很可能包含了用于批量处理数据的工具类,可能包括创建线程池、执行并发查询、收集结果等功能。例如,它可能会有一个静态方法`executeConcurrentQueries(List)`,该方法接受一个包含查询任务的列表,然后使用...

    java多线程控制的赛跑程序

    - 在赛跑比赛中,我们可能需要确保所有选手在同一时间起跑,这就需要使用到线程同步机制,例如`synchronized`关键字或`java.util.concurrent`包中的工具类。 - 使用`synchronized`关键字可以防止多个线程同时访问...

    java 多线程编程实战指南(核心 + 设计模式 完整版)

    - **监控与诊断**:利用JMX、VisualVM等工具监控和分析多线程程序的性能。 通过学习《Java多线程编程实战指南》,开发者不仅可以理解多线程的基本概念,还能掌握如何在实际项目中运用多线程技术,提升程序的并发...

    多线程demo/java多线程练习

    通过这个"多线程demo/java多线程练习"项目,你可以深入学习和实践Java多线程编程,包括线程池的使用、并发工具的应用以及模拟数据库操作时的线程安全问题。这将极大地提高你在实际项目中的问题解决能力。

    Java多线程资料

    6. **并发工具类** - CountDownLatch:计数器,用于等待一组线程完成。 - CyclicBarrier:循环屏障,允许多个线程同步到达某个点后再继续执行。 - Semaphore:信号量,控制同时访问特定资源的线程数量。 - ...

    Springboot Druid多数据源 多线程

    对于多线程处理任务,Java中的ExecutorService和ThreadPoolExecutor是常用的工具。在Spring Boot中,我们可以创建一个Bean来管理线程池,然后在业务代码中提交任务到线程池执行。这样可以有效地利用系统资源,提高...

    Java多线程编程核心技术_完整版_java_

    1. java.util.concurrent包下的工具类,如CountDownLatch、CyclicBarrier、Semaphore等,用于协调多个线程之间的操作。 以上内容只是《Java多线程编程核心技术》教程中的一部分核心知识点,实际学习中还需要结合...

    java多线程详解(比较详细的阐述了多线程机制)

    Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,从而提升系统效率和资源利用率。...在实际开发中,结合Java提供的工具和设计模式,能够更好地解决多线程问题,提高程序的并发性能。

    java多线程简单下载器

    此外,`java.util.concurrent`包中的工具类,如`Semaphore`(信号量)或`CyclicBarrier`(回环栅栏),可能被用来协调不同线程间的操作。 3. **线程池**: 虽然描述中没有明确提及,但更高效的实现可能会使用`...

    陕西多线程1.6终极版(附查名字).rar

    9. **线程间的通信**:Java的BlockingQueue接口和并发工具类如Semaphore、CountDownLatch等,提供线程间的通信和协调。 10. **中断线程**:线程可以通过Thread.interrupt()方法请求中断,但线程可能处于阻塞状态,...

    单线程与多线程python爬虫地图瓦片源码

    本文将深入探讨“单线程与多线程Python爬虫地图瓦片源码”的相关知识点。 首先,我们需要理解“线程”这一概念。线程是程序执行的最小单元,每个线程负责执行特定的任务。在单线程环境中,程序按顺序执行,一次只能...

Global site tag (gtag.js) - Google Analytics