zoukankan      html  css  js  c++  java
  • Java之创建线程的方式四:使用线程池


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

    /**
    * 创建线程的方式四:使用线程池
    *
    * 好处:
    * 1.提高响应速度(减少了创建新线程的时间)
    * 2.降低资源消耗(重复利用线程池中线程,不需要每次都创建)
    * 3.便于线程管理
    * corePoolSize:核心池的大小
    * maximumPoolSize:最大线程数
    * keepAliveTime:线程没有任务时最多保持多长时间后会终止
    *
    *
    * 面试题:创建多线程有几种方式?四种!
    */

    class NumberThread implements Runnable{

    @Override
    public void run() {
    for(int i = 0;i <= 100;i++){
    if(i % 2 == 0){
    System.out.println(Thread.currentThread().getName() + ": " + i);
    }
    }
    }
    }

    class NumberThread1 implements Runnable{

    @Override
    public void run() {
    for(int i = 0;i <= 100;i++){
    if(i % 2 != 0){
    System.out.println(Thread.currentThread().getName() + ": " + i);
    }
    }
    }
    }

    public class ThreadPool {

    public static void main(String[] args) {
    //1. 提供指定线程数量的线程池
    ExecutorService service = Executors.newFixedThreadPool(10);
    ThreadPoolExecutor service1 = (ThreadPoolExecutor) service;
    //设置线程池的属性
    // System.out.println(service.getClass());
    // service1.setCorePoolSize(15);
    // service1.setKeepAliveTime();


    //2.执行指定的线程的操作。需要提供实现Runnable接口或Callable接口实现类的对象
    service.execute(new NumberThread());//适合适用于Runnable
    service.execute(new NumberThread1());//适合适用于Runnable

    // service.submit(Callable callable);//适合使用于Callable
    //3.关闭连接池
    service.shutdown();
    }

    }
  • 相关阅读:
    【SQL】语句/函数汇总
    【SVN】提交报错:×××文件is not under version control
    【AnjularJS系列1】样式相关的指令
    【Javescript】DOM(文档对象模型)
    【HTML】框架集(Framesets)
    【HTML】<!DOCTYPE html>作用
    vue2.0移动端自定义性别选择提示框
    微信小程序踩坑记
    网页里如何使用js禁用F12事件
    网页里如何使用js屏蔽鼠标右击事件
  • 原文地址:https://www.cnblogs.com/wpy188/p/12099906.html
Copyright © 2011-2022 走看看