JUC线程框架深度解析 — 07、线程池

 一堆线程一起完成一件事情就是线程池。 【 线程池的核心组成 】【 线程池分类 】➢ java.util.concurrent.Executors类可以创建线程池➣ 创建无大小限制的线程池 : public static ExecutorService newCacheThreadPool();➢ 创建固定大小的线程池 : public static ExecutorService newFixe...
摘要由CSDN通过智能技术生成
 一堆线程一起完成一件事情就是线程池。
 

【 线程池的核心组成 】


【 线程池分类 】
➢ java.util.concurrent.Executors类可以创建线程池
➣ 创建无大小限制的线程池 : public static ExecutorService newCacheThreadPool();
➢ 创建固定大小的线程池 : public static ExecutorService newFixedThreadPool(int nThreads);
➣ 单线程池 : public static ScheduledExecutorService newSingleThreadScheduledExecutor();

➣ 创建定时调度池 : public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize).

【 创建四种线程池 】
下面将具体演示四中线程池的创建以及其自身的使用特点。当Executors创建完成了线程池之后可以返回“ExecutorService”接口对象,而这个接口对象里面有两个方法来接收线程的执行:
★ 接收Callable: public <T> Future<T> submit(Callable<T> task);
★ 接收Runnable: public Future<?> submit(Runnable task);

范例:创建无限量线程池

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class MLDNTestDemo {
    public static void main(String[] args) throws Exception {
        // 现在创建了一个线程池
        ExecutorService service = 
                  Executors.newCachedThreadPool();
        for (int x = 0; x < 10; x++) {
            service.submit(() -> { // 线程池会负责启动
                System.out.println(Thread.currentThread()
                        .getName() + "执行操作。");
            });
        }
        service.shutdown(); // 线程池执行完毕后需要关闭
    }
}

范例:创建有限量的线程池

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class MLDNTestDemo {
    public static void main(String[] args) throws Exception {
        // 线程池只能够装下3个人
        ExecutorService service = 
                   Executors.newFixedThreadPool(3) ;
        for (int x = 0; x < 10; x++) {
            // 线程池会负责启动
            service.submit(() -> {
                System.out.println(Thread.currentThread()
                   .getName() + "执行操作。");
            });
        } 
        service.shutdown(); // 线程池执行完毕后需要关闭
    }
}

范例:创建单线程池

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class MLDNTestDemo {
    public static void main(String[] args) throws Exception {
        ExecutorService service = 
                   Executors.newSingleThreadExecutor() ;
        for (int x = 0; x < 10; x++) {
            // 线程池会负责启动
            service.submit(() -> {
                System.out.println(Thread.currentThread()
                        .getName() + "执行操作。");
            });
        }
        service.shutdown(); // 线程池执行完毕后需要关闭
    }
}
     除了以上的三中线程池之外还可以创建一个定时调度池,这个调度池主要以间隔调度为主。如果要创建调度池则肯定使用ScheduledExecutorService接口完成,在该接口之中包含有如下的两个方法:
延迟启动:public ScheduledFuture<?>schedule(Runnable command, long delay, TimeUnit unit);
间隔调度:ScheduledFuture<?>scheduleAtFixedRate(Runnable command, 
            long initialDelay, long period, TimeUnit unit);

范例:创建调度池

import java.util.concurrent.Executors;
import java.ut
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值