Java中的线程优先级

时间:2014-06-20 22:41:57

标签: java multithreading

我在我的应用程序中遇到问题,有时当两个线程都将鼠标移动到屏幕的某些(X,Y)坐标时,线程有时会尝试同时执行此操作(对于不同的(X,Y) ),导致曲折持续几秒钟。

将我的某个线程的线程优先级更改为更高解决此问题,还是应该添加AtomicBoolean以解决此问题? (AtomicBoolean的问题在于,我需要一个AtomicBoolean用于许多东西,因为在两个线程中都有许多不同的函数调用鼠标移动)

1 个答案:

答案 0 :(得分:1)

如果在多个线程之间使用单个鼠标对象,则应在应该一次处理的部分上使用同步{}块。其他需要该对象的线程将在等到达类似的同步块时等待。

run() {
    synchronize (mouse) {
      mouse.move();
      mouse.click();
      mouse.move();
      etc();
    }
    otherStuff();
}

确保您的同步块不是那么大,以至于一个线程使用鼠标独占时间。这看起来取决于您的应用程序。