文档章节

newCachedThreadPool()可缓存线程池详解,代码示例

满风
 满风
发布于 2016/04/15 17:05
字数 325
阅读 445
收藏 0
package com.dy.pool;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * 在Executors类里面提供了一些静态工厂,生成一些常用的线程池。
 3. newCachedThreadPool
 创建一个可缓存的线程池。如果线程池的大小超过了处理任务所需要的线程,
 那么就会回收部分空闲(60秒不执行任务)的线程,当任务数增加时,此线程池又可以智能的添加新线程来处理任务。
 此线程池不会对线程池大小做限制,线程池大小完全依赖于操作系统(或者说JVM)能够创建的最大线程大小。
 */
public class CachedThreadPool {
    public static void main(String[] args) {
        System.out.println("欢迎来到线程世界!");

        //创建一个可重用固定线程数的线程池
        ExecutorService pool = Executors.newCachedThreadPool();
        //创建实现了Runnable接口对象,Thread对象当然也实现了Runnable接口
        CachedThreadPool.MyThread t1 = new CachedThreadPool().new MyThread("线程实例1");
        CachedThreadPool.MyThread t2 = new CachedThreadPool().new MyThread("线程实例2");
        CachedThreadPool.MyThread t3 = new CachedThreadPool().new MyThread("线程实例3");
        CachedThreadPool.MyThread t4 = new CachedThreadPool().new MyThread("线程实例4");
        //将线程放入池中进行执行
        pool.execute(t1);
        pool.execute(t2);
        pool.execute(t3);
        pool.execute(t4);
        //关闭线程池
        pool.shutdown();
    }

    class MyThread extends Thread {
        public MyThread(){}
        public MyThread(String name){
            super(name);
        }
        @Override
        public void run() {
            System.out.println(this.getName() + "正在执行。。。");
            System.out.println(Thread.currentThread().getName() + "正在执行。。。");
        }
    }
}



© 著作权归作者所有

共有 人打赏支持
满风

满风

粉丝 83
博文 165
码字总数 175959
作品 0
杭州
技术主管
java四种线程池使用

Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创...

方墨大师
2016/03/01
58
0
Java 四种线程池的用法分析

1、new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() { ).start(); 那你就out太多了,new Thread的弊端如下: a. 每次new Thread新建对象性能差。 ...

7哥
2016/07/07
41
0
使用 Executors,ThreadPoolExecutor,创建线程池,源码分析理解

之前创建线程的时候都是用的 ,,, 这四个方法。 当然 也是用不同的参数去 实现的,本文先分析前四种线程创建方式,后在分析 创建方式 使用 Executors 创建线程池 1.newFixedThreadPool() 由于...

PengLei
2017/10/12
0
0
asyncTask详解

介绍 android UI是线程不安全的,因此想实现在子线程中刷新UI就需要借助一些机制来实现,一般有两种方法:handler+message;还有一种就是今天我们要讲的asyncTask。asyncTask相对handler+mes...

tomcater
2016/04/19
39
0
ExecutorService线程池

ExecutorService 建立多线程的步骤: 1。定义线程类 class Handler implements Runnable{ } 2。建立ExecutorService线程池 ExecutorService executorService = Executors.newCachedThreadPoo......

长平狐
2012/11/28
107
0

没有更多内容

加载失败,请刷新页面

加载更多

你为什么在Redis里读到了本应过期的数据

一个事故的故事 晚上睡的正香突然被电话吵醒,对面是开发焦急的声音:我们的程序在访问redis的时候读到了本应过期的key导致整个业务逻辑出了问题,需要马上解决。 看到这里你可能会想:这是不...

IT--小哥
今天
2
0
祝大家节日快乐,阖家幸福! centos GnuTLS 漏洞

yum update -y gnutls 修复了GnuTLS 漏洞。更新到最新 gnutls.x86_64 0:2.12.23-22.el6 版本

yizhichao
昨天
5
0
Scrapy 1.5.0之选择器

构造选择器 Scrapy选择器是通过文本(Text)或 TextResponse 对象构造的 Selector 类的实例。 它根据输入类型自动选择最佳的解析规则(XML vs HTML): >>> from scrapy.selector import Sele...

Eappo_Geng
昨天
4
0
Windows下Git多账号配置,同一电脑多个ssh-key的管理

Windows下Git多账号配置,同一电脑多个ssh-key的管理   这一篇文章是对上一篇文章《Git-TortoiseGit完整配置流程》的拓展,所以需要对上一篇文章有所了解,当然直接往下看也可以,其中也有...

morpheusWB
昨天
5
0
中秋快乐!!!

HiBlock
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部