
线程池是顶先创建线程的一项技术, 线程池在还没有任务到来之前, 创建一定数量的线程, 放入空闲队列中,然后对这些资源进行复用。减少频繁的创建和销毁对象
jdk1.5 版本以上版本提供了现成的线程池
Java里面线程池的顶级接口是Executor,是一个执行线程的工具
线程池接口是ExecutorService
java.util.concurrent包 :并发编程中很常用的实用工具类
Executor接口
执行已提交的Runnable任务的对象
ExecutorService接口
ExecutorService提供了管理终止的方法,以及可以为跟踪一个或多个异步任务执行状况而生成的 Future方法
Executors类
此包中所定义的Executor 、 ExecutorService等工厂和实用方法。
package com.vince;
import java.util.concurrent.*;
/**
* jdk1.5 以上才能使用,方便
* 前面两种较常用。。。
*/
public class ThreadDemo5 {
public static void main(String[] args) {
//创建线程池(4种)
//1.创建一个单线程的线程池
//ExecutorService es= Executors.newSingleThreadExecutor();
//创建固定大小的线程池
//ExecutorService es= Executors.newFixedThreadPool(1);
//创建一个可缓存的线程池,如果线程池的大小超过了处理任务所需要的线程,那么就会回收部分空闲(60s不执行任务)的线程,当任务数增加时,
//此线程池又可以智能的添加新线程来处理,此线程池不会对线程池大小做限制,线程池大小完全依赖于操作系统(或者说JVM)能够创建的最大线程大小
//ExecutorService es=Executors.newCachedThreadPool();
//ExecutorService es= Executors.newScheduledThreadPool(3);
ScheduledExecutorService es=Executors.newScheduledThreadPool(3);
//ExecutorService executorService = Executors.newCachedThreadPool();
//es.execute(new MyRunable6());
//es.execute(new MyRunable6());
es.schedule(new MyRunable6(),3000,TimeUnit.MILLISECONDS);
es.shutdown();
}
}
class MyRunable6 implements Runnable{
public void run(){
for(int i=0;i<10;i++){
System.out.println(Thread.currentThread().getName()+"----"+i);
try{
Thread.sleep(300);
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
/**
* 1.进程与线程
* 2.线程的基本使用
* 3.线程休眠
* 4.join与中断线程
* 5.守护线程与yield
* 6.其他方法与优先级
* 7.线程同步
* 8.死锁
* 9.生产者与消费者应用案例
* 10.线程生命周期
* 11.线程池
*/
}
本文详细介绍了Java中线程池的概念和技术实现,包括线程池的创建方式、使用场景及其实现类ExecutorService的多种方法。同时,文章还提供了一个简单的示例程序,展示了如何使用ScheduledExecutorService来调度任务。
170万+

被折叠的 条评论
为什么被折叠?



