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();
    }

    }
  • 相关阅读:
    logging模块、sys模块、shelve模块
    re模块、hashlib模块
    包、常用模块
    模块
    迭代器、生成器、递归、二分法
    函数对象、函数嵌套、名称空间与作用域、闭包函数、装饰器
    函数
    文件处理
    字符编码
    Djiango导读
  • 原文地址:https://www.cnblogs.com/wpy188/p/12099906.html
Copyright © 2011-2022 走看看