• 多线程-命名和拒绝策略


    package com.sincerity.egg.common.test;

    import java.util.concurrent.ArrayBlockingQueue;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.RejectedExecutionHandler;
    import java.util.concurrent.ThreadFactory;
    import java.util.concurrent.ThreadPoolExecutor;
    import java.util.concurrent.TimeUnit;
    /**
    * 遵循阿里巴巴开发规范
    * 运用多线程的时候,要定义好线程的名称和拒绝策略,这样如果线上出问题能很快的定位到是那块代码的问题
    * 线程的名字最好是有业务名称,不然不好定位是那块业务出了问题;
    * @author zjz
    *
    */
    public class TestExecutor {

    private static ExecutorService pool;

    public static void main(String[] args) {
    pool = new ThreadPoolExecutor(3, 5, 1000, TimeUnit.MILLISECONDS,
    new ArrayBlockingQueue<Runnable>(5),
    new ThreadFactory(){ public Thread newThread(Runnable r) {
    return new Thread(r, "createOrder_thread_" + r.hashCode());
    }}, new MyRejectedExecutionHandler());

    for(int i =0;i<15;i++) {
    pool.execute(new Task());
    }

    pool.shutdown();
    }


    static class Task implements Runnable{

    @Override
    public void run() {
    try{
    Long duration = (long)(Math.random()*20);
    System.out.println("Running Task! "+Thread.currentThread().getName());
    TimeUnit.SECONDS.sleep(duration);
    }catch(Exception e){
    e.printStackTrace();
    }

    }
    }


    static class MyRejectedExecutionHandler implements RejectedExecutionHandler {
    @Override
    public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
    System.out.println(r.toString()+"执行了拒绝策略");
    }
    }


    }

  • 相关阅读:
    报表插件
    开发工具安装运行bug总结
    UML学习笔记
    Asp.net MVC中的ViewData与ViewBag
    mvc 4 Razor (@html.xx)语法大全以及应用
    数据大并发处理
    vs2010常用快捷方式
    asp.net mvc3+EF4.1项目实战
    jquery,javascript常用
    vs2010常见错误
  • 原文地址:https://www.cnblogs.com/ww25/p/13157167.html
Copyright © 2020-2023  润新知