zoukankan      html  css  js  c++  java
  • Java第二十七天,线程池

    1.什么情况下需要线程池?

    频絮创建线程就会大大降低系统的效率,那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?在java中可以通过线程池来达到这样的效果

    2.线程池的概念

    线程池其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源

    3.线程池实现原理

    线程池的实现原理如下:

    (1)创建一个容纳线程的容器——线程池,它本质上是一个集合

    (2)当我们需要使用线程的时候,从线程池中取出这个线程,例如:

    Thread myThread = List.remove();

    (3)当我们使用完它的时候,需要将它放回线程池,例如:

    list.add(myThread)

    (4)从上面我们了解到,线程池可以并且大部分情况下是使用队列来完成的

    4.线程池的使用

    jdk 1.5以后,官方已经提供了有关线程池的API,用户可以直接使用而无需自己创建

    自定义实现接口

    package myThread;
    
    public class runnableImpl implements Runnable{
    
        @Override
        public void run() {
            System.out.println(Thread.currentThread().getName() + "创建了一个线程");
        }
    }
    
    package myThread;
    
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    //java.util.concurrent.Executors 是创建线程池的类
    
    public class threadLearn {
    
        private static ExecutorService pools;
    //java.util.concurrent.ExecutorService 是线程池接口,返回接口的实现类
    
        public static void main(String[] args) {
    
            pools = Executors.newFixedThreadPool(5);
    //创建一个线程池,重用固定数量(根据nThreads参数)的线程
            pools.submit(new runnableImpl());
    //
            pools.submit(new runnableImpl());
            pools.submit(new runnableImpl());
            pools.submit(new runnableImpl());
            pools.submit(new runnableImpl());
            pools.submit(new runnableImpl());
            pools.submit(new runnableImpl());
            pools.submit(new runnableImpl());
    
            pools.shutdown();
    //销毁线程池,如果不执行该方法,线程池一直处于运行状态
        }
    }
    

  • 相关阅读:
    Laravel 项目中编写第一个 Vue 组件
    laravel 中CSS 预编译语言 Sass 快速入门教程
    Laravel 项目中使用 Bootstrap 框架
    web框架之MVC/MTV
    jQuery补充之jQuery扩展/form表单提交/滚动菜单
    jQuery前端插件以及图片延迟加载
    JavaScript正则表达式补充
    jQuery语法介绍
    DOM
    JavaScript
  • 原文地址:https://www.cnblogs.com/viplanyue/p/12700450.html
Copyright © 2011-2022 走看看