• java 核心编程——线程之线程池(ExecutorService)(四)


    1.线程池产生的背景

      web服务,数据库访问等都需要处理大量的请求线程,如果每次都为每个请求创建新的线程,任务完成销毁线程,对于服务器来说,创建和销毁线程对资源的消耗都是比较大的。所以为了防止资源浪费,必须得对线程进行管理。线程池就是管理线程的高级技术。

    2.线程池的功能

      2.1通过对线程的管理,更合理高效的使用资源。

      2.2通过对线程池的维护,可以节省创建线程的开销。

    3.线程池的使用

    package se.thread;
    
    import java.util.Random;
    import java.util.concurrent.Executor;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    public class TreadPoolTest extends  Thread {
    
        public static void main(String[] args) {
    
            TreadPoolTest treadPoolTest = new TreadPoolTest();
            treadPoolTest.start();
    
    
        }
    
    
        @Override
        public void run() {
    
            ExecutorService executorService = Executors.newFixedThreadPool(2);
    
            for (int i = 0; i < 100; i++) {
                Runnable runnable = new Runnable() {
                    @Override
                    public void run() {
                        long time = (long)(Math.random()*1000);
    
                        System.out.println("休息时间:"+time+" ms");
    
                        try {
                            Thread.sleep(time);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
    
    
                    }
                };
    
                executorService.execute(runnable);
            }
            executorService.shutdown();
        }
    
    
    }

    注意:1.线程池必须使用shutdown显示关闭。

       2.在for循环中一般会等待线程池空闲线程,会导致主线程阻塞,所以一般都将for循环放入线程中让其运行。

  • 相关阅读:
    opendressinghash //use resize array
    ChainingHash
    Hash function
    stack && queue
    random_select
    counting sort
    master theorem
    各排序算法及其比较
    视图中添加主键的方法
    oracle表空间的扩展
  • 原文地址:https://www.cnblogs.com/wwyx-xi/p/7527245.html
Copyright © 2020-2023  润新知