zoukankan      html  css  js  c++  java
  • Spring线程池任务执行顺序测试

    package threadtest;
    
    import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
    
    import java.util.concurrent.ThreadPoolExecutor;
    
    public class ThreadPoolTest {
    
        static class Worker extends Thread {
            private String name;
    
            public Worker() {
            }
    
            public Worker(String name) {
                super(name);
                this.name = name;
            }
    
            @Override
            public void run() {
                System.out.println("This is thread:" + name + " begin");
                try {
                    Thread.sleep(10000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("This is thread:" + name + " end");
            }
        }
    
        public static void main(String[] args) {
            ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
            executor.setCorePoolSize(1);
            executor.setQueueCapacity(48);
            executor.setMaxPoolSize(2);
            executor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());
            executor.initialize();
    
            for (int i=1; i<=50; i++) {
                executor.submit(new Worker("w" + i));
            }
            System.out.println(executor.getPoolSize());
        }
    
    }

    这里我们通过代码的方式新建一个线程池,然后CorePoolSize只设置1,然后设置了48大小的等待队列,最后将MaxPoolSize设置为2.

    我们的Worker线程需要10秒钟才能执行完毕,所以理论上应该同时执行Worker-1和Worker-50,而Woker-2到Worker-49都在队列里等待。

    运行结果如下,印证了我们的猜想。

  • 相关阅读:
    cocos2d翻牌效果实现
    ShareSDK
    cocos2diphone版本选择
    UITextView设置透明背景
    iOS常用第三方类库
    CCMenu布局
    macosx下安装mysql
    mac截图
    iPhone对OpenGL ES的支持
    cocos2d下action和线程
  • 原文地址:https://www.cnblogs.com/shuada/p/15707760.html
Copyright © 2011-2022 走看看