Java 常用线程池
来源:互联网 发布:管家婆软件初始密码 编辑:程序博客网 时间:2024/05/22 13:18
Java通过Executors提供四种线程池,分别为:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。(常用)
newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。(常用)
newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
newFixedThreadPool例:
import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;
public class Test {
public static void main(String[] args) {
// 创建一个可重用固定线程数的线程池
ExecutorService pool = Executors.newFixedThreadPool(5);
// 创建线程
Thread t1 = new MyThread();
Thread t2 = new MyThread();
Thread t3 = new MyThread();
Thread t4 = new MyThread();
Thread t5 = new MyThread();
// 将线程放入池中进行执行
pool.execute(t1);
pool.execute(t2);
pool.execute(t3);
pool.execute(t4);
pool.execute(t5);
// 关闭线程池
pool.shutdown();
}
}
class MyThread extends Thread {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "正在执行。。。");
}
}
输出结果
pool-1-thread-1正在执行。。。
pool-1-thread-3正在执行。。。
pool-1-thread-4正在执行。。。
pool-1-thread-2正在执行。。。
pool-1-thread-5正在执行。。。
延迟连接池,newScheduledThreadPool例:
public class Test {
public static void main(String[] args) {
// 创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。
ScheduledExecutorService pool = Executors.newScheduledThreadPool(2);
// 创建实现了Runnable接口对象,Thread对象当然也实现了Runnable接口
Thread t1 = new MyThread();
Thread t2 = new MyThread();
Thread t3 = new MyThread();
// 将线程放入池中进行执行
pool.execute(t1);
// 使用延迟执行风格的方法
pool.schedule(t2, 1000, TimeUnit.MILLISECONDS);
pool.schedule(t3, 10, TimeUnit.MILLISECONDS);
pool.shutdown();
}
}
补充:
秒做单位:TimeUit.SECONDS
纳秒单位:TimeUit.NANOSECONDS
毫秒单位:TimeUit.MILLISECONDS
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。(常用)
newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。(常用)
newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
newFixedThreadPool例:
import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;
public class Test {
public static void main(String[] args) {
// 创建一个可重用固定线程数的线程池
ExecutorService pool = Executors.newFixedThreadPool(5);
// 创建线程
Thread t1 = new MyThread();
Thread t2 = new MyThread();
Thread t3 = new MyThread();
Thread t4 = new MyThread();
Thread t5 = new MyThread();
// 将线程放入池中进行执行
pool.execute(t1);
pool.execute(t2);
pool.execute(t3);
pool.execute(t4);
pool.execute(t5);
// 关闭线程池
pool.shutdown();
}
}
class MyThread extends Thread {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "正在执行。。。");
}
}
输出结果
pool-1-thread-1正在执行。。。
pool-1-thread-3正在执行。。。
pool-1-thread-4正在执行。。。
pool-1-thread-2正在执行。。。
pool-1-thread-5正在执行。。。
延迟连接池,newScheduledThreadPool例:
public class Test {
public static void main(String[] args) {
// 创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。
ScheduledExecutorService pool = Executors.newScheduledThreadPool(2);
// 创建实现了Runnable接口对象,Thread对象当然也实现了Runnable接口
Thread t1 = new MyThread();
Thread t2 = new MyThread();
Thread t3 = new MyThread();
// 将线程放入池中进行执行
pool.execute(t1);
// 使用延迟执行风格的方法
pool.schedule(t2, 1000, TimeUnit.MILLISECONDS);
pool.schedule(t3, 10, TimeUnit.MILLISECONDS);
pool.shutdown();
}
}
补充:
秒做单位:TimeUit.SECONDS
纳秒单位:TimeUit.NANOSECONDS
毫秒单位:TimeUit.MILLISECONDS
微秒单位:TimeUit.MICROSECONDS
【原创】原创文章,更多关注敬请关注微信公众号。
阅读全文
0 0
- java常用线程池
- java常用线程池
- Java 常用线程池
- java线程池 常用方法
- java线程池 常用方法
- Java常用线程池使用说明
- java常用的线程池
- java线程池常用类
- java线程池常用方法收集
- java线程池常用简单方法
- java常用线程池的特点
- Java 线程池的常用方法分析
- Java 中几种常用的线程池
- java常用的三种线程池
- Java中常用的线程池介绍
- Java中常用的线程池
- java再复习-常用线程池
- java线程常用函数
- 1006. 换个格式输出整数 (15)
- ios中SEL ( @selector() )简析
- spring源码学习 spring-core(一)ASM包
- vimrc vim简易设置
- Android post请求时参数上传失败
- Java 常用线程池
- 关于按位取反
- 2440移植Linux Kernel笔记(四)------yaffs2打补丁
- Android应用第一次安装成功点击“打开”后Home键切出应用后再点击桌面图标返回导致应用重启问题
- mysql基本命令
- AVL树的四种旋转--初步解析
- profile介绍
- Java中必须了解的常用类
- 数据存储及堆栈