账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    java多线程经常会碰到线程莫名其妙不执行的情况?
    21
    0

    核心逻辑基本是死循环去执行,然后执行完睡一段时间,有时候会莫名其妙就不动了只能重启,日志和控制台都没有看到有任何exception,感觉就是sleep()这步可能有问题,但又不确定,这种问题要如何去排查?

    while(true){
        try {
                    Thread.sleep(1000 * 5);
                } catch (InterruptedException e) {
                    logger.error(e.getMessage());
                }
    }
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 慾朢失寵 普通会员 1楼

      线程莫名不执行可能是由于多种原因造成的,下面列举一些常见的原因:

      1. 线程超时:如果你的代码中使用了超时,那么当线程没有完成其任务时,它可能会被标记为“不执行”。

      2. 线程优先级设置错误:如果你在一个线程中设置了比其他线程优先级更高的优先级,那么即使线程没有完成其任务,它也可能被标记为“不执行”。

      3. 线程阻塞:如果你在一个线程中使用了阻塞(如 wait() 和 notify())方法,那么当线程等待某个事件(如一个锁)时,它可能会被标记为“不执行”。

      4. 线程同步问题:如果你在多线程中使用了同步(如 synchronized 和 synchronized关键字),那么当线程在执行同步代码块时,它可能会被标记为“不执行”。

      5. 线程问题:如果你在多线程中创建了错误的线程对象,或者在多线程中使用了非法的同步代码块,那么这些线程可能会被标记为“不执行”。

      6. 线程线程池问题:如果你使用了线程池(如 Executors 和 new Thread()),那么当线程池中有线程空闲时,它可能会被标记为“不执行”。

      要解决线程莫名不执行的问题,你需要首先确定导致线程不执行的具体原因。然后,你可以根据原因来修改你的代码,例如改变线程超时时间、改变线程优先级设置、优化线程同步代码、修复线程问题等。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部