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

来源:互联网 发布:美女公寓小说txt淘宝 编辑:程序博客网 时间:2024/06/05 09:38

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;@Slf4jpublic 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 - >> 1111111111112:39:52.884 [scheduledPool-0] INFO  ess.tester.MyTest - >> 1111111111112:39:53.385 [scheduledPool-0] INFO  ess.tester.MyTest - >> 1111111111112:39:53.885 [scheduledPool-1] INFO  ess.tester.MyTest - >> 1111111111112:39:54.384 [scheduledPool-1] INFO  ess.tester.MyTest - >> 1111111111112:39:54.885 [scheduledPool-1] INFO  ess.tester.MyTest - >> 1111111111112:39:55.385 [scheduledPool-1] INFO  ess.tester.MyTest - >> 1111111111112:39:55.885 [scheduledPool-1] INFO  ess.tester.MyTest - >> 1111111111112:39:56.385 [scheduledPool-0] INFO  ess.tester.MyTest - >> 1111111111112:39:56.885 [scheduledPool-1] INFO  ess.tester.MyTest - >> 1111111111112:39:57.385 [scheduledPool-1] INFO  ess.tester.MyTest - >> 1111111111112:39:57.885 [scheduledPool-1] INFO  ess.tester.MyTest - >> 1111111111112:39:58.385 [scheduledPool-0] INFO  ess.tester.MyTest - >> 1111111111112:39:58.885 [scheduledPool-0] INFO  ess.tester.MyTest - >> 1111111111112:39:59.385 [scheduledPool-1] INFO  ess.tester.MyTest - >> 1111111111112:39:59.885 [scheduledPool-0] INFO  ess.tester.MyTest - >> 1111111111112:40:00.385 [scheduledPool-1] INFO  ess.tester.MyTest - >> 1111111111112:40:00.885 [scheduledPool-1] INFO  ess.tester.MyTest - >> 1111111111112:40:01.385 [scheduledPool-0] INFO  ess.tester.MyTest - >> 1111111111112:40:01.885 [scheduledPool-1] INFO  ess.tester.MyTest - >> 1111111111112:40:02.385 [scheduledPool-1] INFO  ess.tester.MyTest - >> 1111111111112:40:02.885 [scheduledPool-1] INFO  ess.tester.MyTest - >> 11111111111

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

最后

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

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

程序员周刊

0 0
原创粉丝点击