我有一个监视键盘和鼠标输入的线程。当用户单击我程序中的按钮时,它会激活该线程,然后当用户输入特定组合时,它会在下面的示例代码中调用方法 test()。所以很明显,线程在这个 test() 方法中时不能监视我的输入,所以 spacePressed 永远不会变成真的,因为这个线程在完成之前不能调用它的另一个方法。
public void test()
{
spacePressed = false;
while(!spacePressed)
{
pasteAtCursorLocation("Test");
sleepy(1000);
}
}
那么我可以创建另一个线程来监视输入,并且当按下空格时,它会返回 true 到特定的函数调用。所以它会做我想要的吗?
public void test()
{
SpaceWatcher sw = new SpaceWatcher();
sw.start();
while(!sw.SpacePressed())
{
pasteAtCursorLocation("Test");
sleepy(1000);
}
}
但这会经常调用 SpaceWatcher 吗?那就是 space watch 是否有足够的时间在空间输入调用之间观察输入?
编辑: pasteAtCursorLocation 就像它说的那样,困倦地调用 Thread.sleep(ms)