摘要
最有价值的调试工具是以线程为中心的。大部分 Java 错误都与线程交互有关。多线程调试让开发人员可以查看应用程序中运行的每个线程中的执行情况。
SUN Laura Bennett
多线程调试基础
最有价值的调试工具是以线程为中心的。大部分 Java 错误都与线程交互有关。多线程调试让开发人员可以查看应用程序中运行的每个线程中的执行情况。
由于执行顺序的易变性,查找多线程应用程序中的错误比非线程化情况要困难得多。如果可以按相同的可预料顺序执行指令,那么调试这些应用程序就可以变得非常简单。当然,这将违背多线程化的目标。结果,许多 IDE 调试器在这种情况下都不能起什么作用,因为单步调试代码会减缓调试过程,并禁止重新创建错误事件。
多线程错误的类型
这里有几种常见的多线程编码问题需要密切关注:
访问违规。当两个或更多线程试图访问同一个内存位置时,会发生这种问题。
死锁。譬如说 Thread1 锁定了 ResourceA,而 Thread2 锁定了 ResourceB。然后Thread1试图锁定 ResourceB,并等待 Resou...[ 查看全文 ]