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

本文共 2423 字,大约阅读时间需要 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);                }            });        }            }}

 

转载于:https://www.cnblogs.com/nongzihong/p/10523379.html

你可能感兴趣的文章
Javascript ----函数表达和形参实参
查看>>
PHP 防恶意刷新实现代码
查看>>
全文检索、数据挖掘、推荐引擎系列3---全文内容推荐引擎之中文分词
查看>>
软件工程—软件可靠性测试
查看>>
个人阅读计划
查看>>
SQL Server 查看数据页面
查看>>
angularJS的过滤器!
查看>>
微信小程序 --- Image组件
查看>>
sql 获取一个周的周一和周日
查看>>
zepto源码分析-代码结构【转载】
查看>>
nginx+uwsgi+Django部署线上环境
查看>>
jQuery 包装集
查看>>
CCNA Cloud CLDFND 210-451 QUIZ: Server Virtualization
查看>>
应用层各协议用的端口
查看>>
VMware workstation转到vsphere解决办法
查看>>
从 PC 卸载 Office
查看>>
matlab练习程序(图像加噪,各种滤波)
查看>>
matlab练习程序(摄像头获取数据)
查看>>
shell脚本学习
查看>>
OpenJudge Bailian 2757 最长上升子序列 DP
查看>>