自定义线程创建


import java.util.concurrent.*;

/**
 * 自定义线程创建
 */
public class RejectThreadPoolDemo2 {
    public static class MyTask implements Runnable{
        @Override
        public void run() {
            System.out.println(System.currentTimeMillis()+" Id:"+Thread.currentThread().getId());
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    public static void main(String[] args) throws InterruptedException{
        MyTask task = new MyTask();
        ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 5, 0L,
                TimeUnit.MILLISECONDS, new SynchronousQueue<>(),//SynchronousQueue没有容量,每一个插入操作都要等待一个相应的删除操作
                new ThreadFactory() {
                    @Override
                    public Thread newThread(Runnable r) {
                        Thread thread = new Thread(r);
                        thread.setDaemon(true);
                        System.out.println("create "+thread);
                        return thread;
                    }
                }
         );
        for (int i = 0; i < 5; i++) {
            executor.submit(task);
        }
    }
    //create Thread[Thread-0,5,main]
    //create Thread[Thread-1,5,main]
    //1567646705048 Id:9
    //create Thread[Thread-2,5,main]
    //1567646705048 Id:10
    //create Thread[Thread-3,5,main]
    //1567646705049 Id:11
    //create Thread[Thread-4,5,main]
    //1567646705049 Id:12
    //1567646705050 Id:13
}
posted @ 2019-09-05 10:02  fly_bk  阅读(251)  评论(0编辑  收藏  举报