第5篇、rabbitmq客户端ConnectionFactory的ThreadFactory

既然看到ConnectionFactory中有使用jdk自带ThreadFactory类,我想研究一下它源码,浅尝辄止,也就是如下这一行代码

private ThreadFactory threadFactory             = Executors.defaultThreadFactory();

1、ThreadFactory

  • 它一个接口且只有一个newThread方法,传入一个Runnable参数

  • 它设置作用就是避免硬调用new Thread方法, 同时也可以做一下控制

  • 最简单实现这个接口:

    • class SimpleThreadFactory implements ThreadFactory{
        public Thread newThread(Runnable r){
          return new Thread(r);
        }
      }
      
  • 如果你不想自己实现这个接口就直接使用Executors#defaultThreadFactory()也就是rabbitmq使用方法

2、Executors.DefaultThreadFactory

2.1、成员变量

fielddefault(默认)含义
poolNumber1线程池编号(其实就是工厂类编号)每次+1
groupnull线程所在组
threadNumber1线程编号(每个工厂类的线程编号都是从1开始的)
namePrefixnull线程名称前缀,格式为pool-工厂类编号-thread-
  • group: SecurityManager对应线程组优先级是最高的,其实就是当前线程
  • 线程名称:pool-工厂类编号-thread-线程编号
  • 如果创建线程是守护线程,这设置它为不是守护线程
  • 如果优先级不等于5,则设置它优先级为5

2.2、验证代码

  • /**
     * 验证
     * @author liangchen
     * @date 2021/6/4
     */
    public class TestThreadFactory {
    
        public static void main(String[] args) {
            ThreadFactory threadFactory1 = Executors.defaultThreadFactory();
            Thread thread1 = threadFactory1.newThread(() -> System.out.println(11));
            Thread thread2 = threadFactory1.newThread(() -> System.out.println(22));
    
    
            ThreadFactory threadFactory2 = Executors.defaultThreadFactory();
            Thread thread21 = threadFactory2.newThread(() -> System.out.println(11));
            Thread thread22 = threadFactory2.newThread(() -> System.out.println(22));
    
            System.out.println(thread1.getName() + ":" + thread1.getPriority());
            System.out.println(thread2.getName() + ":" + thread1.getPriority());
            System.out.println(thread21.getName() + ":" + thread1.getPriority());
            System.out.println(thread22.getName() + ":" + thread1.getPriority());
    
    
        }
    }
    
    
  • 输出结果

    • pool-1-thread-1:5
      pool-1-thread-2:5
      pool-2-thread-1:5
      pool-2-thread-2:5
      

结尾

  • 感谢大家的耐心阅读,如有建议请私信或评论留言。
  • 如有收获,劳烦支持,关注、点赞、评论、收藏均可,博主会经常更新,与大家共同进步
  • 下一篇就是分析rabbitmq客户端Connection对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值