线程池创建多线程

时间:2024-4-7    作者:老大夫    分类: JAVA


在JUC高并发中会有详细讲解

现有问题

并发线程很多,有很多线程执行的时间很短,就需要频繁的创建和销毁,使得系统效率降低。

思路

提前创建好多个线程,放入线程池,使用时直接提取,使用后放回线程池,增加线程的复用性。

好处

提高了程序执行的效率。

  1. 线程提前创建好
  2. 提高资源复用率
  3. 可以设置相关参数对池中线程使用进行管理

例子

import java.util.Collection;
import java.util.List;
import java.util.concurrent.*;

public class CallableTest {
    public static void main(String[] args) {
        //1.提供指定数量的线程池
        ExecutorService service= Executors.newFixedThreadPool(10);
        ThreadPoolExecutor service1 = (ThreadPoolExecutor) service;
        //设置线程池属性
//        System.out.println(service.getClass());//ThreadPoolExecutor
        service1.setMaximumPoolSize(50);//设置线程池线程数上限

        //2.执行指定线程的操作。需要实现runnable接口或者callable接口实现类的对象
        numberSingle ns=new numberSingle();
        numberDouble nd=new numberDouble();
        service.execute(ns);//适合runnable
        service.execute(nd);
// service.submit(Callable callable);//适合Callable

        //3.线程池关闭
        service.shutdown();

    }

}
    class numberSingle 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 numberDouble implements Runnable{

        @Override
        public void run() {
            for (int i = 0; i < 100; i++) {
                if(i%2!=0){
                    System.out.println(Thread.currentThread().getName()+":"+i);
                }
            }
        }
    }

版权所有:伸手党盘
文章标题:线程池创建多线程
文章链接:https://ssdpan.cn/?post=370
本站文章来源于网络搜集和原创,仅供学习使用,未经授权请勿用于任何商业用途,如有侵权及时联系删除

推荐阅读:


扫描二维码,在手机上阅读