executors

Java通过Executors框架提供四种线程池

{

        /**创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。*/
        ExecutorService executorService= Executors.newCachedThreadPool();

        for (int i=0;i<10;i++)
        {
            final int index=i;
            executorService.execute(new Runnable() {
                @Override
                public void run() {
                    System.out.println(index);
                }
            });

        }

    }
{
        /**创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。**/
        ExecutorService service= Executors.newFixedThreadPool(2);
        for (int i = 0; i <10 ; i++) {
            final int  index=i;
            service.execute(new Runnable() {
                @Override
                public void run() {
                    try {
                        System.out.println(index);
                        Thread.sleep(2000);
                    }catch (Exception e ){
                        System.out.println(e.getMessage());
                    }
                }
            });
        }
    }
	{


    public static void main(String[] args) {
        /**创建一个定长线程池,支持定时及周期性任务执行**/
        testOne();
        testTwo();

    }

    public static  void testOne(){
        /**表示延迟3秒执行。*/
        ScheduledExecutorService scheduledExecutorService= Executors.newScheduledThreadPool(2);
        scheduledExecutorService.schedule(new Runnable() {
            @Override
            public void run() {
                System.out.println("delay 2 seconds");
            }
        },2, TimeUnit.SECONDS);
    }

    public static void testTwo(){
        /**表示延迟1秒后每3秒执行一次*/
        ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);
        scheduledThreadPool.scheduleAtFixedRate(new Runnable() {
            public void run() {
                System.out.println("delay 1 seconds, and excute every 3 seconds");
            }
        }, 1, 3, TimeUnit.SECONDS);
    }
}
{
        /**
         创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行**/
        ExecutorService executorService= Executors.newSingleThreadExecutor();
        for (int i = 0; i <10 ; i++) {

                final int index = i;
                executorService.execute(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            Thread.sleep(2000);
                            System.out.println(index);
                            }catch(Exception e){
                                e.getMessage();
                         }
                        }
                });

        }
    }

线程池里面做了些啥 ,JDK是有工具可以查看 jconsole 在JDK的bin目录下
在这里插入图片描述程序在JDK中运行后的监控
在这里插入图片描述
技术原理都差不多 多做记录 多学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值