对Java线程池的学习
来源:互联网 发布:协同过滤算法流程图 编辑:程序博客网 时间:2024/06/16 11:02
线程池(ThreadPool)分为以下四种:
1.newCachedThreadPool(创建一个可缓存的线程池,如果线程长度超过处理的需要,可灵活的回收空闲线程,若无可回收,则新建线程)
代码:
ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); for (int i= 0;i<10;i++){ final int index = 1; try { Thread.sleep(index * 100); } catch (InterruptedException e) { e.printStackTrace(); } cachedThreadPool.execute(new Runnable() { @Override public void run() { System.out.print(index); } }); }
2.newFixedThreadPool(创建一个定长的线程池,可控制线程的并发数,超出的会在队列中等待执行)
代码:
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3); for (int i=0 ;i<10;i++){ final int index = 1; fixedThreadPool.execute(new Runnable() { @Override public void run() { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } }); }
3.newScheduledThreadPool (创建一个定长的线程池,支持定时及周期性任务的执行)
代码:
ScheduledExecutorService scheduleThreadPool = Executors.newScheduledThreadPool(5); scheduleThreadPool.schedule(new Runnable() { @Override public void run() { System.out.print("delay 3 seconds"); } },3, TimeUnit.SECONDS);
4.newSingleThreadPool (他只会用唯一线程去执行任务)
代码:
ExecutorService singelThreadPool = Executors.newSingleThreadExecutor(); for (int i= 0 ;i< 10;i++){ final int index = 1; singelThreadPool.execute(new Runnable() { @Override public void run() { try { System.out.print(index); Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } }); }
阅读全文
0 0
- 对Java线程池的学习
- 对Java线程池的理解
- Java线程的学习_线程池
- java线程池的学习
- 对java线程的理解
- java线程的学习
- java线程的学习
- java线程的学习
- java的线程学习
- java线程的学习
- java 线程的学习
- 浅谈对JAVA线程池的理解(一)
- 浅谈对java线程池的理解二
- Java学习:线程池的简单构建
- Java中线程池的学习
- Java学习--线程池Executors的使用
- Java多线程之线程池的学习
- java线程池的原理学习
- java笔记
- Spring mvc Ambiguous mapping found. Cannot map controller bean method
- Android Binder Analysis(4)
- 选择排序、冒泡排序算法
- WaitForMultipleObjects
- 对Java线程池的学习
- 最大字段和问题
- Git详解
- POJ 1315 Don't Get Rooked 笔记
- 剑指offer 面试题6 重建二叉树
- java 单个或多个文件上传
- 成员变量和局部变量
- iOS学习笔记--图片上传
- 快乐司机