java启动时报线程占用报错Exception in thread “Thread-14“怎么解决


这篇文章主要讲解了“java启动时报线程占用报错Exceptioninthread“Thread-14“怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java启动时报线程占用报错Exceptioninthread“Thread-14“怎么解决”吧!启动项目后抛出异常,但是奇怪的是执行器在任务调度中心中注册成功,也能成功执行网上有的说通过在低版本的 xxl-job 中, 初始化XxlJobSpringExecutor执行器需要在@Bean中加上 initMethod = "start", destroyMethod = "destroy",但是在高版本的 xxl-job(如 2.1.2)则需要删除 initMethod = "start", destroyMethod = "destroy"而我的问题不是在bean上加(initMethod = “start”, destroyMethod = “destroy”),我加上之后会报两遍线程被使用的异常。后来我发现我的问题是 本地和线上的程序连接了相同的xxl-job,并且连接xxl-job的端口是一样的,导致了这个问题!就是这个 port端口重复导致的问题修改一下即可port: 9996本来我是第二种情况已经解决了,结果下午又报这个错了,因此有了第三种情况的解决。启动报错时的 错误关键日志:由于我已经解决过一次,所以我对端口比较敏感(大家看完后面的分析就可以知道我为什么敏感),就在yaml文件种搜了一下所有的 port 一共有五处。排除项目的port(项目的接口冲突会直接报错,停止运行)排除xxl-job (第二种情况冲突已经解决)剩下的是集成的 redis,elasticsearch,rabbitmqredis和elasticsearch我都没有开启,问题就只在rabbitmq了。rabbitmq我是本地起的docker,来连接测试的。然后我有认真看了一下日志,就是上面贴出来的第一行[delegate=amqp://root@127.0.0.1:5673/, localPort= 5415]也就是打印完这个日志后报的错误,localPort= 5415,于是我又在本地查看了一下这个5415端口使用情况netstat -aon|findstr 5415果然 两个不同的线程在用!然后我打开任务管理器 详细信息,找到4136是daocker我重启了一下电脑,,解决了程序启动之后重新启动了一个线程去连接xxl-job的端口,但是这个端口已经被占用了,所以程序就直接返回了一个这个线程被占用了。服务创建监听的时候,如果端口有LISTENING、ESTABLISHED、TIME_WAIT等,好像都会报错。 可以研究下原理TCP状态转移要点TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不会被释放。网络服务器程序要同时管理大量连接,所以很有必要保证无用连接完全断开,否则大量僵死的连接会浪费许多服务器资源。在众多TCP状态中,最值得注意的状态有两个:CLOSE_免费云主机域名WAIT和TIME_WAIT。1、LISTENING状态  FTP服务启动后首先处于侦听(LISTENING)状态。2、ESTABLISHED状态  ESTABLISHED的意思是建立连接。表示两台机器正在通信。3、TIME_WAIT我方主动调用close()断开连接,收到对方确认后状态变为TIME_WAIT。TCP协议规定TIME_WAIT状态会一直持续2MSL(即两倍的分段最大生存期),以此来确保旧的连接状态不会对新连接产生影响。处于TIME_WAIT状态的连接占用的资源不会被内核释放,所以作为服务器,在可能的情况下,尽量不要主动断开连接,以减少TIME_WAIT状态造成的资源浪费。目前有一种避免TIME_WAIT资源浪费的方法,就是关闭socket的LINGER选项。但这种做法是TCP协议不推荐使用的,在某些情况下这个操作可能会带来错误。感谢各位的阅读,以上就是“java启动时报线程占用报错Exceptioninthread“Thread-14“怎么解决”的内容了,经过本文的学习后,相信大家对java启动时报线程占用报错Exceptioninthread“Thread-14“怎么解决这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是百云主机,小编将为大家推送更多相关知识点的文章,欢迎关注!

相关推荐: 怎么使用PHP查询两个表并将其合并

这篇文章主要讲解了“怎么使用PHP查询两个表并将其合并”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用PHP查询两个表并将其合并”吧! 首先,我们需要创建两个表并在表中插入一些数据。假设一个表名为“ord…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 07/01 17:32
下一篇 07/01 17:32

相关推荐