zoukankan      html  css  js  c++  java
  • Thread 线程池

    Thread 线程池:

    当使用多个较短存活期的线程有利时,运用线程池技术可以发挥作用。运用这一技术时,不是为每个任务创建一个全新的线程,而可以从线程池中抽出线程,并分配给任务。
    当线程完成任务后,再把它放回到池中,并等待另一次分配。

    优点:

    线程池节省了虚拟机为每项短期工作创建全新线程的工作量。另外,它使得与线程的启动以及消亡后的清理相关的开销最小。创建一个线程池后,可以在不同的任务中循环使用池是的单个线程。
    通过线程池技术,可以减少反应的时间,因为线程已经得以构建,并已经启动,只是等待下一个任务而已。

    单线程池:newSingleThreadExecutor()

    可变大小线程池:newCachedThreadPool()

    可延迟线程池:newScheduledThreadPool(int corepoolsize)

    /**
    * 线程池中如果线程大小大于线程池数,则线程多的处于等待状态,当线程池中的线程结束后才会运行多余的线程
    */
    public class ThreadPoolTest {
    public static void main(String[] args){
    ExecutorService pool= Executors.newFixedThreadPool(2);//创建2个固定大小的线程池
    pool.execute(new Runnable() {
    @Override
    public void run() {
    int i=0;
    while (i<5){
    i++;
    System.out.println("线程1");
    try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }
    });
    pool.execute(new Runnable() {
    @Override
    public void run() {
    int i=0;
    while (i<5){
    i++;
    System.out.println("线程2");
    try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }
    });
    pool.execute(new Runnable() {
    @Override
    public void run() {
    int i=0;
    while (i<5){
    i++;
    System.out.println("线程3");
    try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }
    });
    }
    }
  • 相关阅读:
    css基础
    html常用标签
    自写一个ant-design-pro AnimationList组件
    设计一个A表数据抽取到B表的抽取过程
    垂直、水平方向观看楼层天际线不变情况下能增加的建筑物高度最大总和
    JavaScript 新旧替换一:变量声明
    前端异常类型及捕获方式
    自定义 create-react-app
    Git Commit 规范参考
    JavaScript 团队规范参考
  • 原文地址:https://www.cnblogs.com/feipengting/p/7550312.html
Copyright © 2011-2022 走看看