虽然在线程中运行它时循环不起作用

问题描述 投票:0回答:2

所以基本上我试图让while循环在该线程中运行,当“ activate”评估为true时,它应该被激活,但是由于某种原因它不起作用。“ activate”是布尔值,当用户按下鼠标按钮时会激活(我为此设置了侦听器)。如果有人想知道我是否为此项目使用jnativehook库。任何帮助或解释将不胜感激。

private boolean activate;
private Robot robot;


@Override
public void run() {
    try {
        robot = new Robot();
    } catch (AWTException e) {
        e.printStackTrace();
    }

    while(true) {
        if (activate == true) {
            robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
            robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
            robot.delay(100);
        }
    }       
}
java multithreading mouseevent jnativehook
2个回答
0
投票

一种可能性是编译器(Java编译器或JIT编译器)已决定不需要测试activate,因为它可以证明while循环内的任何内容都不会对其进行更改。在大多数编译的编程语言中,除非您进行其他特殊说明,否则允许编译器assume


0
投票

activate永远不会设置为true。如果您不相信我,请在while循环的底部添加以下行:

© www.soinside.com 2019 - 2024. All rights reserved.