gpt4 book ai didi

java - java中的多线程调试

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:44:08 25 4
gpt4 key购买 nike

我有一个运行大约 50 个线程 的程序。我采用生产者消费者设计模式在线程之间传递数据。程序运行一段时间后,有时会由于我用来在线程之间分发数据的 BlockingQueue 之一变满而卡住,因此程序的主要分发部分在尝试向此 BlockingQueue 添加数据时会阻塞。换句话说,其中一个线程由于某种原因停止,然后它用来接收数据的 blockingQueue 变满了。

我该如何以高效的方式进行调试?我已经尝试用 catch(Exception e) 包围所有 run() 方法中的内容,但是什么也没有抛出。我使用 Java/IntelliJ 进行开发。

有什么想法、想法或一般准则吗?

最佳答案

使用记录器“调试它”。我喜欢SLF4J .

在每个关键操作前后设置log.debug 语句。在每个方法的开始和结束时使用 log.enteringlog.exiting 调用。

当您“调试”时,您将在记录器设置为非常低的级别 (FINEST) 的情况下运行您的应用程序,然后运行您的应用程序并观察日志记录语句以了解它何时失败以及失败时的状态。

由于您担心线程问题,请确保您的日志格式包含线程名称或编号。

关于java - java中的多线程调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29676391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com