java线程提前终止并且可疑

标签 java multithreading

我在传递给线程 t 的 Runnable 中有以下代码:

public void run() {
        logger.debug("Starting thread " + Thread.currentThread());

        try {
            doStuff();
        } catch (Exception e) {
         logger.debug("Exception in Thread " + Thread.currentThread());
        } 

        logger.debug("End of thread " + Thread.currentThread());
    }

我遇到了一个错误,我发现在以下情况下出现死锁

  • 我的日志只打印了线程消息的开始
  • 线程转储显示线程 t(应该执行此操作)不再运行

有没有什么神奇的方法可以让这个线程在不记录线程结束消息或抛出异常的情况下提前终止?

最佳答案

您确定 doStuff() 没有抛出 Error 吗?将 catch (Exception e) 更改为 catch (Throwable t)。可以使用 Thread.stop() 终止 Java 中的线程,但这种可能性很小。

关于java线程提前终止并且可疑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/791835/

相关文章:

java - jmap - 组织和堆操作会给 jvm 带来开销吗?

iphone - 将一个操作分解为多个线程在 iPhone 上有优势吗?

java - 中断 DatagramSocket.receive 中的线程

java - 如何在两个字符串之间或单个字符串内显示 vector/图像

java - 如何在Java中高性能地显示多个SVG

Javamail ISO-8859-1 格式

c - 使用 POSIX QUEUE 完成后该怎么做

c - 为什么主进程会在没有循环的情况下创建许多子进程?

java - 如果对于每个条目只有一个线程访问它,映射是否需要同步?

java - 不使用 HashSet 删除 ArrayList 中的重复元素