Discuss / Java / 线程池 schedule

线程池 schedule

Topic source

Junes_99994

#1 Created at ... [Delete] [Delete and Lock User]

import java.util.concurrent.*;

import java.util.*;

import java.text.SimpleDateFormat;

public class Main {

    public static void main(String[] args) {

        // 创建一个固定大小的线程池:

        ScheduledExecutorService spool = Executors.newScheduledThreadPool(4);

        spool.scheduleAtFixedRate(new Task(), 0,

                1, TimeUnit.SECONDS);

        // 关闭线程池: //spool.shutdown();

    }

}

class Task implements Runnable {

    public static int i = 0;

    static final SimpleDateFormat sdfDate = new SimpleDateFormat("HH:mm:ss.SSS");

    Date st = new Date();

    Date et = new Date();

    @Override

    public void run() {

        Date t = new Date();

        System.out.println("interval:" + (t.getTime() - st.getTime()) + "ms");

        st = new Date(t.getTime());

        System.out.println(sdfDate.format(st) + ":" + "start task " + Task.i);

        try {

            Thread.sleep(500 + (int) (Math.random() * 1000));

        } catch (InterruptedException ignored) {

        }

        et = new Date();

        System.out.println(sdfDate.format(et) + ":" + "end task " + Task.i++);

        System.out.println("period:" + (et.getTime() - st.getTime()) + "ms\n");

    }

}


  • 1

Reply