最近开始接手 Java 的项目,目前代码问题涉及到线程相关的内容,先说一下现状是
1 、线程是通过 new Thread().start 去启动的
2 、线程过一段时间就会假死
想咨询一下如何保证线程不假死,示例如下
public class thread1 mplements Runnable { @Override public void run() { while (true) { try { if (condition) { // 代码 ....... try { Thread.sleep(300); } catch (InterruptedException e) { sout(e) } } else { try { Thread.sleep(10000); } catch (InterruptedException e) { sout(e) } } } catch (Exception e) { } } }
像这种一个线程逻辑里面,根据判断条件有多个休眠的,有什么好解决方案没,我查了一下 Timer 和 ScheduledExecutorService ,好像都不太符合,TimeUnit.时间单位.sleep 的底层好像也是 Thread.sleep 实现的,直接使用 ThreadPoolExecutor 去管理线程会不会有效,大家可以说说自己的看法
1 Rickkkkkkk 2024-09-25 16:13:38 +08:00 啥叫假死? 感觉你在提 AB 问题 直接说具体需求吧 |
2 NxxRngjnbgj OP @Rickkkkkkk 就是线程一直在写库,写着写着就不写了。重启 jar 包又好了,但是时间是不确定的 |
3 Rickkkkkkk 2024-09-25 16:19:26 +08:00 @NxxRngjnbgj 内部抛异常整个线程没了吧。 |
4 NxxRngjnbgj OP @Rickkkkkkk 目前日志抛的是 StackOverFlow |
5 Rickkkkkkk 2024-09-25 16:30:34 +08:00 |
6 dode 2024-09-26 11:36:39 +08:00 try { while (true) { } } catch (Exception e) { } saveErrorInfo(); |
7 dode 2024-09-26 11:37:44 +08:00 设置好线程名称,不写了的时候这个线程还在不在,这个线程在执行什么函数调用 |