`
darkma
  • 浏览: 520985 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

Java 利用线程池创建并发线程

阅读更多

import java.util.concurrent.ArrayBlockingQueue;

import java.util.concurrent.ThreadPoolExecutor;

import java.util.concurrent.TimeUnit;

 

public class ThreadPoolExecutorUtil {

 

// 池中所保存的线程数,包括空闲线程

private static final int corePoolSize = 10;

// 池中允许的最大线程数

private static final int maximumPoolSize = 100;

// 当线程数大于核心时,此为终止前多余的空闲线程等待新任务的最长时间(目前设为1800秒即30分钟)

private static final int keepAliveTime = 1800;

// 执行前用于保持任务的队列

private static final int blockingQueueSize = 10;

// 参数的时间单位

private static final TimeUnit unit = TimeUnit.SECONDS;

 

private static ThreadPoolExecutor threadPool = null;

 

/**

* 获取线程池的单例

* @return

*/

public static ThreadPoolExecutor getPoolInstance() {

if (threadPool == null) {

synchronized (ThreadPoolExecutor.class) {

// 实例化线程池

threadPool = new ThreadPoolExecutor(corePoolSize,

maximumPoolSize, keepAliveTime, unit,

new ArrayBlockingQueue<Runnable>(blockingQueueSize),

new ThreadPoolExecutor.DiscardOldestPolicy());

}

}

// 返程线程池的实例化对象

return threadPool;

}

public static void main(String[] args) {

for (int i = 0; i < 10; i++) {

// 实例化线程池

ThreadPoolExecutor threadPool = ThreadPoolExecutorUtil

.getPoolInstance();

// 触发并行线程的运行

threadPool.execute(new SingleThread(i+""));

}

}

 

}

 

class SingleThread implements Runnable {

private String name = null;

public SingleThread(String name) {

this.name = name;

}

 

public void run() {

System.out.println("parallel run..." + name);

}

}

分享到:
评论

相关推荐

    线程池的多线程并发控制技术研究

    线程池的多线程并发控制技术研究.caj 线程池的多线程并发控制技术研究.caj 线程池的多线程并发控制技术研究.caj

    java多线程查询数据库

    java多线程并发查询数据库,使用线程池控制分页,并发查询。

    Java并发编程相关源码集 包括多任务线程,线程池等.rar

    Java并发编程常见知识点源码集锦,涉及到对象锁,Executors多任务线程框架,线程池等示例,列出一些源码包中包括的内容:  volatile关键字的非原子性、volatile关键字的使用、AtomicInteger原子性操作、线程安全小...

    Java 利用多线程实现文件的分片下载

    文件如果特别小,而自己网络又非常好的情况下,不建议使用线程池进行下载,因为线程任务的创建也会浪费一些时间和性能!因为写这个程序是为了更快的下载一些4K壁纸,所以传入的url只能是直链,当然 可以根据自己的...

    Java多线程Executors批量执行数据实现限流

    java线程池Executors实现数据批量操作。 批量异步Executors处理数据,实现限流操作,QPS限流。 线程池调用第三方接口限流实现逻辑。 案例适合: 1.批量处理大数据。 2.数据批量导出。 3任务数据异步执行。 4.多线程...

    Java 并发学习笔记:进程和线程,并发理论,并发关键字,Lock 体系,原子操作类,发容器 &amp; 并发工具,线程池,并发实践

    Java 并发学习笔记: 进程和线程, 并发理论, 并发关键字, Lock 体系, 原子操作类, 发容器 & 并发工具, ...此外,Java还具有丰富的类库和广泛的社区支持,开发者可以利用这些资源快速构建应用程序。Java类库

    java线程池处理多并发,所有进程执行完后再统一处理结果

    java线程池处理多并发,所有进程执行完后再统一处理结果线程池配置类多线程并行demo 线程池配置类 import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation....

    Java几种线程池类型介绍及使用.docx

    1.使用new Thread()创建线程的弊端: 每次通过new Thread()创建对象...可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞。 提供定时执行、定期执行、单线程、并发数控制等功能。

    java多线程编程总结

    Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 Java线程:线程的调度-...

    Java多线程编程总结

    Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 Java线程:线程的...

    java并发编程:juc线程池

    JUC 线程池管理线程的创建、复用和销毁,有效地减少了线程频繁创建和销毁所带来的开销,从而提高了系统资源的利用率。 不了解并发编程和线程池的开发者可能会面临多线程竞争、死锁等问题。通过深入了解 Java 并发...

    java线程池概念.txt

    为了防止资源不足,服务器应用程序需要采取一些办法来限制任何给定时刻处理的请求数目,尽可能减少创建和销毁线程的次数,特别是一些资源耗费比较大的线程的创建和销毁,尽量利用已有对象来进行服务,这就是“池化...

    Java线程池技术详解

    而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器...

    2023年最新Java高并发多线程面试题

    内容概要:最新2023年Java高并发多线程后端面试题整理, 包含线程池,并发集合,volatile,CountDownLatch,Semaphore,Phaser,AQS,ReentrantLock,ReentrantLock等等问题, 用简洁明了的语言,通俗易懂地阐述了高...

    java线程池的源码分析.zip

    java线程池的源码分析以及各种池之间的对比;

    java线程池讲义+代码

    在线程池中维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。使用线程池不仅能够保证内核的充分利用,还能防止过分调度。WEB服务器完成网页请求这样的任务...

    使用java的HttpClient实现多线程并发

    主要介绍了使用java的HttpClient实现多线程并发的相关资料,需要的朋友可以参考下

    MultiThread_并发_java_线程池_

    Java并发编程相关源码集 包括多任务线程

Global site tag (gtag.js) - Google Analytics