我在我的应用程序中遇到问题,有时当两个线程都将鼠标移动到屏幕的某些(X,Y)坐标时,线程有时会尝试同时执行此操作(对于不同的(X,Y) ),导致曲折持续几秒钟。
将我的某个线程的线程优先级更改为更高解决此问题,还是应该添加AtomicBoolean以解决此问题? (AtomicBoolean的问题在于,我需要一个AtomicBoolean用于许多东西,因为在两个线程中都有许多不同的函数调用鼠标移动)
答案 0 :(得分:1)
如果在多个线程之间使用单个鼠标对象,则应在应该一次处理的部分上使用同步{}块。其他需要该对象的线程将在等到达类似的同步块时等待。
run() {
synchronize (mouse) {
mouse.move();
mouse.click();
mouse.move();
etc();
}
otherStuff();
}
确保您的同步块不是那么大,以至于一个线程使用鼠标独占时间。这看起来取决于您的应用程序。