newScheduledThreadPool创建可间隔时间执行的线程池

2 篇文章 0 订阅
1 篇文章 0 订阅

newScheduledThreadPool,创建一个可间隔时间执行的线程池,并且可以指定数量,以前确实没这么写过,都是写while循环,看来后面我要恶补一下线程池的技术了,下面是我抽出来的部分代码。

package ess.tester;

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;

import org.junit.Test;

import com.google.common.util.concurrent.ThreadFactoryBuilder;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class MyTest {
    private static final long initialDelay = 0;
    private static final long period = 500;// 500 millseconds
    @Test
    public void test0(){
        ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("scheduledPool-%d").build();
        ScheduledExecutorService scheduledPool = Executors.newScheduledThreadPool(2, namedThreadFactory);
        scheduledPool.scheduleAtFixedRate(
                new Account(), 
                initialDelay,
                period, 
                TimeUnit.MILLISECONDS
        );

        Thread t=Thread.currentThread();
        t.suspend();
    }

    class Account implements Runnable{

        @Override
        public void run() {
            log.info(">> 11111111111");
        }

    }
}

执行结果如下,

12:39:52.390 [scheduledPool-0] INFO  ess.tester.MyTest - >> 11111111111
12:39:52.884 [scheduledPool-0] INFO  ess.tester.MyTest - >> 11111111111
12:39:53.385 [scheduledPool-0] INFO  ess.tester.MyTest - >> 11111111111
12:39:53.885 [scheduledPool-1] INFO  ess.tester.MyTest - >> 11111111111
12:39:54.384 [scheduledPool-1] INFO  ess.tester.MyTest - >> 11111111111
12:39:54.885 [scheduledPool-1] INFO  ess.tester.MyTest - >> 11111111111
12:39:55.385 [scheduledPool-1] INFO  ess.tester.MyTest - >> 11111111111
12:39:55.885 [scheduledPool-1] INFO  ess.tester.MyTest - >> 11111111111
12:39:56.385 [scheduledPool-0] INFO  ess.tester.MyTest - >> 11111111111
12:39:56.885 [scheduledPool-1] INFO  ess.tester.MyTest - >> 11111111111
12:39:57.385 [scheduledPool-1] INFO  ess.tester.MyTest - >> 11111111111
12:39:57.885 [scheduledPool-1] INFO  ess.tester.MyTest - >> 11111111111
12:39:58.385 [scheduledPool-0] INFO  ess.tester.MyTest - >> 11111111111
12:39:58.885 [scheduledPool-0] INFO  ess.tester.MyTest - >> 11111111111
12:39:59.385 [scheduledPool-1] INFO  ess.tester.MyTest - >> 11111111111
12:39:59.885 [scheduledPool-0] INFO  ess.tester.MyTest - >> 11111111111
12:40:00.385 [scheduledPool-1] INFO  ess.tester.MyTest - >> 11111111111
12:40:00.885 [scheduledPool-1] INFO  ess.tester.MyTest - >> 11111111111
12:40:01.385 [scheduledPool-0] INFO  ess.tester.MyTest - >> 11111111111
12:40:01.885 [scheduledPool-1] INFO  ess.tester.MyTest - >> 11111111111
12:40:02.385 [scheduledPool-1] INFO  ess.tester.MyTest - >> 11111111111
12:40:02.885 [scheduledPool-1] INFO  ess.tester.MyTest - >> 11111111111

从上面可以看出,就是两个线程每次间隔500毫秒执行,这些都是可以配置的。

最后

扫描下方Q群二维码快速加入Java学习交流群
Java学习交流Q群

关注下方‘程序员周刊’微信公共帐号,每周获取最新IT资讯。

程序员周刊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值