![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
代码荷尔蒙
这个作者很懒,什么都没留下…
展开
-
记录一次springboot程序假死问题
项目描述:用户调用接口,接口异步开启任务A,给用户快速返回OK状态,异步任务A中会并发调用1-10000的子任务,当所有子任务结束后,redis发布任务状态,由于1-10000的子任务都有消息发送的需求,中间都会一直发送消息,同时有写库的操作,去掉事务,开启线程。(注:子任务每个执行时间都很慢)这次要求压测项目,但是发现一个很奇怪的现象,就是当请求上去之后,程序就假死了。查看了jstack发现所有的线程都是waiting的状态,查看jmap也没有太大的对象。然后使用visualvm看了一下项目的情况原创 2020-12-14 18:08:28 · 2036 阅读 · 0 评论 -
java线程池线程超时关闭的两种我认为比较好的方式
问题:比如多线程进行io操作的时候,io的读取在等待的时候(比如telnet某端口时,会长时间等待),线程是不会关闭的,这样导致线程不释放,早晚凉凉。线程池关闭线程的方式有很多,我使用以下两种,简单介绍下,希望能帮助到你。1、编写守护线程,来关闭你的当前线程思路:创建守护线程执行业务操作,编写用户线程超时退出,当用户线程退出后,守护线程将强制退出。代码如下:package BK2020.M08.D27;/** * @description: * @Author: huangsan原创 2020-08-28 21:45:24 · 6579 阅读 · 0 评论 -
springboot集成线程池,自定义线程池与工厂
根据开发规范不太建议我们自己去创建线程,毕竟创建与销毁都是一种损耗。JDK也提供了几种默认的线程池,这些要么就是最大线程数基本没上限,要么就是阻塞队列没有上限,如果代码有问题很容易造成OOM。所以我们来自己实现一个线程池。springboot集成线程池(超简单四步即成)定义一个线程池:线程池的7大参数可以参考我的上一篇博客。这里我自定义了一个线程工厂类,来制定一个有意义的线程名称,方便出错时回溯。@Configurationpublic class ExecutorServiceConfig原创 2020-07-30 18:20:46 · 1398 阅读 · 2 评论