首页 > 解决方案 > 使用和不使用调试器运行多线程程序有什么区别吗?除了明显的

问题描述

我正在做一个小项目,试图将蓝牙传统广告与扩展广告进行比较(模拟)。所以我有两个线程(每个设备一个),他们正在做他们的任务。我正常运行程序并且它不工作(有点预期)但是当我使用调试器运行它时它可以工作。我只有一个断点,它是在任何有意义的操作之后。这就是我的问题出现的时候。使用或不使用调试器运行它有什么区别。

我正在使用 IntelliJ IDEA(最新版本)和 Java 1.8

正常运行时的输出(被我阻止):

343
Process finished with exit code -1

使用调试器输出:

Connected to the target VM, address: '127.0.0.1:58359', transport: 'socket'
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
343
21 .. -39 
[21, ... -39]
DONE
Disconnected from the target VM, address: '127.0.0.1:58359', transport: 'socket'
Process finished with exit code 0

带断点的代码片段

void secondaryListen() {
        if(!Simulation.World.channels[this.receivedAdvertisement.channel].empty) {
            SecondaryMessage currentMessage = (SecondaryMessage) Simulation.World.channels[this.receivedAdvertisement.channel].getPayload();
            for (byte b : currentMessage.content) {
                System.out.print(b +  " ");
                this.receivedData.add(b);
            }
            System.out.println();
            this.mode = Mode.SCAN;
            if(currentMessage.lastMessage) {
                this.mode = Mode.FINISHED; //BREAKPOINT ON THAT LINE
                System.out.println(this.receivedData.toString());
            }
        }
    }

提前感谢所有答案!

标签: javadebuggingintellij-ideabreakpoints

解决方案


推荐阅读