有没有办法找到java代码的执行流程?

时间:2017-11-29 17:00:40

标签: java

  public class Threads1 {
    int x = 0;
    public class Runner implements Runnable {
        public void run(){
            int current = 0;
            for(int i = 0; i<4; i++){
                current = x;
                System.out.println(current + ", ");
                x = current + 2;
            }
        }
    }

    public static void main(String[] args) {
        new Threads1().go();
    }

    public void go(){
        Runnable r1 = new Runner();
        new Thread(r1).start();
        new Thread(r1).start();
    }
}

我想找到这段代码的执行步骤,有没有办法可以向我展示我的consol中的执行流程?

2 个答案:

答案 0 :(得分:1)

打印报表

System.out.println()语句放在代码中的适当位置。例如,放

System.out.println("Entering a for loop");
在for循环之前

知道何时输入for循环。

调试器

了解如何在IDE中设置断点。在您不理解的代码部分的开头设置断点。当要执行该行时,程序将暂停并允许您检查变量,堆栈跟踪,线程等中的值。您还可以找出调试器中正在运行的当前行的哪个线程。 / p>

此外,在调试器上找到“Step in”,“Step over”和“Step out”按钮。这些将允许您逐行“逐步”执行代码,以便您可以查看执行所需的路径。

答案 1 :(得分:0)

Java主题
如果你有几个线程同时运行,那么无法预测哪一个线程首先完成或什么时候完成,比如差分编程。不同的线程由CPU的不同内核执行,因此完全独立于另一个,这会影响计算速度和顺序(CPU中的分支预测在这里扮演一个角色)。这可能导致相当困难的错误,因为它们有时只会发生。

您的问题
线程的执行顺序并不能确定在运行时由CPU决定的编译时间不一致,因为线程不知道他们有合作伙伴。

<强>解决方案
要显示它发生的顺序,只需在您的方法中插入System.out.println语句,并创建一个记录控制台中发生的事情的日志。

已同步的已控制线程
如果使用线程,Java支持synchronized关键字。 Synchronized允许您对多个线程进行一些控制。例如,一次只有一个线程可以与变量或方法交互。有关更多信息,只需谷歌Java同步线程。