zoukankan      html  css  js  c++  java
  • Java线程池理解

    Java语言虽然内置了多线程支持,启动一个新线程非常方便,但是,创建线程需要操作系统资源(线程资源,栈空间等),频繁创建和销毁大量线程需要消耗大量时间。

    那么我们就可以把很多小任务让一组线程来执行,而不是一个任务对应一个新线程。

    这种能接收大量小任务并进行分发处理的就是线程池

    简单地说,线程池内部维护了若干个线程,没有任务的时候,这些线程都处于等待状态。

    如果有新任务,就分配一个空闲线程执行。

    如果所有线程都处于忙碌状态,新任务要么放入队列等待,要么增加一个新线程进行处理。

    Java标准库提供了ExecutorService接口表示线程池,它的典型用法如下:

    // 创建固定大小的线程池:
    ExecutorService executor = Executors.newFixedThreadPool(3);
    // 提交任务:
    executor.submit(task1);
    executor.submit(task2);
    executor.submit(task3);
    executor.submit(task4);
    executor.submit(task5);
    

    因为ExecutorService只是接口,Java标准库提供的几个常用实现类有:

    • FixedThreadPool:线程数固定的线程池;
    • CachedThreadPool:线程数根据任务动态调整的线程池;
    • SingleThreadExecutor:仅单线程执行的线程池。
  • 相关阅读:
    获取当前用户的网络状态--iOS
    网络请求 ---iOS
    一个小项目中需要注意的几个地方
    在项目中几个需要学习的知识
    简单三级联动的建立
    验证码在页面中的使用
    嘿嘿。今天学习了AJAX的几个方法
    状态保持以及AJAX的初步学习
    webform的学习(2)
    WebForm的初步认识
  • 原文地址:https://www.cnblogs.com/gslgb/p/12966598.html
Copyright © 2011-2022 走看看