博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 线程池的创建方式
阅读量:3936 次
发布时间:2019-05-23

本文共 2409 字,大约阅读时间需要 8 分钟。

 
package com.nf147.Constroller;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.TimeUnit;public class ThreadPool {    public static void main(String[] args) {        // 线程池为无限大,当执行第二个任务时第一个任务已经完成,会复用执行第一个任务的线程,而不用每次新建线程。        // 这里如果去除sleep,则你会发现在这个循环中创建了新的线程,因为前一个任务没有执行完,所以创建新线程执行下一个任务。        ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();        for (int i = 0; i < 10; i++) {            final int index = i;            try {                Thread.sleep(10);            } catch (InterruptedException e) {                e.printStackTrace();            }            newCachedThreadPool.execute(new Runnable() {                public void run() {                    System.out.println(Thread.currentThread().getName() + "----" + index);                }            });        }     // 创建一个定长的线程池,也是根据需要去调用线程,比如线程定为100个,而循环只有10个,那么也只会用到前10个进程。        ExecutorService newFixedThreadPool = Executors.newFixedThreadPool(100);        for (int i = 0; i < 10; i++) {            final int index = i;            newFixedThreadPool.execute(new Runnable() {                public void run() {                    // Thread.sleep(1000);                    System.out.println(Thread.currentThread().getName() + "----" + index);                }            });        }// ---------------------------------------------------------------------------------------------------        // 创建一个定长线程池,支持定时及周期性任务执行。       ScheduledExecutorService newScheduledThreadPool = Executors.newScheduledThreadPool(5);        for (int i = 0; i < 10; i++) {            newScheduledThreadPool.schedule(new Runnable() {                public void run() {                    System.out.println(Thread.currentThread().getName() + "----delay 3 seconds");                }            }, 3, TimeUnit.SECONDS);        }// 按顺序来执行线程任务 但是不同于单线程,这个线程池只是只能存在一个线程,这个线程死后另外一个线程会补上。        ExecutorService newSingleThreadExecutor = Executors.newSingleThreadExecutor();        for (int i = 0; i < 10; i++) {            final int index = i;            newSingleThreadExecutor.execute(new Runnable() {                public void run() {                    System.out.println(Thread.currentThread().getName() + "----" + index);                }            });        }            }}

 

 
 
 
 
 
 
 
posted @ 2019-03-13 15:18 阅读(...) 评论(...)

转载地址:http://rxhgn.baihongyu.com/

你可能感兴趣的文章
javascript 函数,BOM
查看>>
javascript 客户端能力检测
查看>>
javascript DOM详解之DOM1
查看>>
javascript DOM扩展
查看>>
矛盾论读书笔记
查看>>
规则 - 利用CDN缓存
查看>>
什么是统计学中的 Standard Error ( SE )?
查看>>
统计学中的标准差(SD)和 平均值的标准误差(SEM)的区别
查看>>
[数据挖掘与预测分析] 单变量统计分析思考问题
查看>>
[统计学笔记] (十三)指数分析(2)
查看>>
Data Science 到底是什么?
查看>>
机器学习(Machine Learning)和传统的数据统计分析(Data Statistics)有什么区别?
查看>>
统计学、统计学习和统计推断之间的关系
查看>>
PMP笔记:质量管理的七个工具
查看>>
悦读:重新定义公司-谷歌是如何运营的
查看>>
研发主管的烦恼:周一早晨延迟的项目会议
查看>>
研发主管的烦恼:难以执行的绩效考核
查看>>
精益Scrum(五)
查看>>
精益Scrum(六)
查看>>
精益Scrum(七)
查看>>