yeye个人博客

愿居于一城,与卿所见美好......

推荐文章

Java线程池中三种方式创建 ThreadFactory 设置线程名称

    本文讲一下Java线程池中创建 ThreadFactory 设置线程名称的三种方式。设置线程名称是很重要的,如果你没有设置过,说明你还“涩世”不深,这里面的坑还不曾踩过,而我 在坑里进去然后坑里出来,被坑的那是一个相当的爽啊~

    为了让不重蹈我的覆辙,为了未来不说起来都是满眼含着“热泪”,还是看下如何设置,顺便也设置设置。


    第一种 CustomizableThreadFactory

    Spring 框架提供的 CustomizableThreadFactory。

    ThreadFactory springThreadFactory = new CustomizableThreadFactory("springThread-pool-");
    
    	ExecutorService exec = new ThreadPoolExecutor(1, 1,
    
    		0L, TimeUnit.MILLISECONDS,
    
    		new LinkedBlockingQueue<Runnable>(10),springThreadFactory);
    
    exec.submit(() -> {
    
    	logger.info("--记忆中的颜色是什么颜色---");
    
    });


    第二种 ThreadFactoryBuilder

    Google guava 工具类 提供的 ThreadFactoryBuilder ,使用链式方法创建。

    ThreadFactory guavaThreadFactory = new ThreadFactoryBuilder().setNameFormat("retryClient-pool-").build();
    
    ExecutorService exec = new ThreadPoolExecutor(1, 1,
    
    		0L, TimeUnit.MILLISECONDS,
    
    		new LinkedBlockingQueue<Runnable>(10),guavaThreadFactory );
    
    exec.submit(() -> {
    
    	logger.info("--记忆中的颜色是什么颜色---");
    
    });


    第三种 BasicThreadFactory

    Apache commons-lang3 提供的 BasicThreadFactory.

    ThreadFactory basicThreadFactory = new BasicThreadFactory.Builder()
    
    		.namingPattern("basicThreadFactory-").build();
    
    
    
    ExecutorService exec = new ThreadPoolExecutor(1, 1,
    
    		0L, TimeUnit.MILLISECONDS,
    
    		new LinkedBlockingQueue<Runnable>(10),basicThreadFactory );
    
    exec.submit(() -> {
    
    	logger.info("--记忆中的颜色是什么颜色---");
    
    });


    总结

    最终本质都是 给 java.lang.Thread#name 设置名称,详情源码感兴趣的可以自行查看。

    final Thread thread = new Thread();
    
    thread.setName(name);


    ————————————————

    版权声明:本文为CSDN博主「阿飞云」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

    原文链接:https://blog.csdn.net/u010648555/article/details/106137206/

    阅读全文>>

作者:yeye分类:【javaEE浏览(131评论(0

2021-06-24 21:46:36

EL表达式处理字符串 是否 包含 某字符串 截取 拆分

    JSP页面页头添加 <%@ taglib uri="/WEB-INF/taglib/c.tld" prefix="c"%> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 两个标签 页面内容如下: <c:if test="${fn:contains(record.name,'样例')==false}"> <% if ((f != null && f.trim().equals("0"))&&name!=null&&!name.trim().equals("免费报告")) { %><a href="javascript:void(0);alert('很抱歉,您无权访问!如需访问请购买产品或联系管理员...');"> ${record.name} </a> <% } else { %> <a href="/tcreportAction.do?method=lookReportInfo&bid=${record.bid } ">${record.name}</a> <% } %> </c:if> <c:if test="${fn:contains(record.name,'样例')}"> <a href="/tcreportAction.do?method=lookReportInfo&bid=${record.bid } ">${record.name}</a> </c:if> ${wjcd.lrsj}原来得到的是如2006-11-12 11:22:22.0 ${fn:substring(wjcd.lrsj, 0, 16)} 使用functions函数来获取list的长度 ${fn:length(list)} fn:contains(string, substring) 假如参数string中包含参数substring,返回true fn:containsIgnoreCase(string, substring) 假如参数string中包含参数substring(忽略大小写),返回true fn:endsWith(string, suffix) 假如参数 string 以参数suffix结尾,返回true fn:escapeXml(string) 将有非凡意义的XML (和HTML)转换为对应的XML character entity code,并返回 fn:indexOf(string, substring) 返回参数substring在参数string中第一次出现的位置 fn:join(array, separator) 将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。 fn:length(item) 返回参数item中包含元素的数量。参数Item类型是数组、collection或者String。假如是String类型,返回值是String中的字符数。 fn:replace(string, before, after) 返回一个String对象。用参数after字符串替换参数string中所有出现参数before字符串的地方,并返回替换后的结果 fn:split(string, separator) 返回一个数组,以参数separator 为分割符分割参数string,分割后的每一部分就是数组的一个元素 fn:startsWith(string, prefix) 假如参数string以参数prefix开头,返回true fn:substring(string, begin, end) 返回参数string部分字符串, 从参数begin开始到参数end位置,包括end位置的字符 fn:substringAfter(string, substring) 返回参数substring在参数string中后面的那一部分字符串 fn:substringBefore(string, substring) 返回参数substring在参数string中前面的那一部分字符串 fn:toLowerCase(string) 将参数string所有的字符变为小写,并将其返回 fn:toUpperCase(string) 将参数string所有的字符变为大写,并将其返回 fn:trim(string) 去除参数string 首尾的空格,并将其返回 截取字符串!使用! <c:if test="${fn:length(onebeans.info)>100 }">${ fn:substring( onebeans.info ,0,100)} ...</c:if> <c:if test="${fn:length(onebeans.info)<=100 }">${ onebeans.info }</c:if>

    阅读全文>>

作者:yeye分类:【javaEE浏览(200评论(0

2020-11-26 23:44:03