生产上第一使用线程池后的总结与反思

本文介绍了在Java中使用线程池解决系统后台造数导致ESB响应超时的问题。探讨了不同线程池的创建方式及其优缺点,并推荐使用ThreadPoolExecutor以实现更灵活的线程管理。

  生产上与 esb 交互时,因为系统后台造数使得 esb 接收响应报文超时。先将造数逻辑修改成线程池异步调用。第一次使用,记录一下学习的历程。

【1】Java向多线程中传递参数的三种方法

    https://blog.youkuaiyun.com/saycheesenn/article/details/52956331

     一、通过构造方法传递数据

     二、通过变量和方法传递数据

     三、通过回调函数传递数据

【2】线程池不建议使用Executors去创建,而是通过ThreadPoolExecutor方式的原因

    https://blog.youkuaiyun.com/qq_31615049/article/details/80756781

创建线程的几种方式及优劣

new Thread 方式

优势:显而易见的线程创建方式

缺点:每次都要new对象,当有大量请求时,数不清new了多少个对象了,如果不及时关闭会导致内存溢出,因此还要考虑线程管理等问题。

Executors工厂创建线程池

newCachedThreadPool:创建一个可缓存线程池

优点:很灵活,弹性的线程池线程管理,用多少线程给多大的线程池,不用后及时回收,用则新建

缺点:一旦线程无限增长,会导致内存溢出。

newFixedThreadPool :创建一个固定大小线程池

优点:创建一个固定大小线程池,超出的线程会在队列中等待。

缺点:不支持自定义拒绝策略,大小固定,难以扩展

newScheduledThreadPool

优点:创建一个固定大小线程池,可以定时或周期性的执行任务。

缺点:任务是单线程方式执行,一旦一个任务失败其他任务也受影响

newSingleThreadExecutor

优点:创建一个单线程的线程池,保证线程的顺序执行

缺点:不适合并发。。不懂为什么这种操作要用线程池。。为什么不直接用队列

 

以上四种创建方式的统一缺点:不支持自定义拒绝策略。

 

通过ThreadPoolExecutor创建线程池

优点:集上述优点于一身

缺点:没发现缺点,因为上述线程池的底层就是通过它来创建的

 

【3】ThreadPoolExecutor参数解释

https://blog.youkuaiyun.com/a837199685/article/details/50619311

【4】性能测试

通过SoapUI进行压力测试

【5】什么是同步,什么是异步

【6】自定义拒绝策略

转载于:https://www.cnblogs.com/smallwangmusk/p/10638383.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值