【发布时间】:2013-03-08 22:20:52
【问题描述】:
我有一个非常繁忙的线程试图做所有事情,它开始减慢我的 MouseMotionListener。我想我会把监听器放在另一个线程中,以确保它总是尽可能快地运行,但是一旦我做到了:
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
public class MouseListenerThread extends Thread implements MouseMotionListener {
public void run(){
//Concurrency happens here
}
public void mouseDragged(MouseEvent e) {
// Do something
}
public void mouseMoved(MouseEvent e) {
// Do something else
}
}
我意识到虽然我可以将这个其他对象函数用作鼠标侦听器,但我不能同时执行此操作。有什么办法可以使用run函数来实现监听吗?我也接受任何其他加快听众速度的解决方案。
谢谢!
【问题讨论】:
-
在 Swing 中,您不应该在事件调度线程中做任何长时间运行的事情。您非常繁忙的线程应该是您创建的其他线程。您的鼠标侦听器将从事件调度线程中调用,因此这两个线程不应相互干扰。
-
如果您有影响
EDT的进程,请考虑将该功能放在SwingWorker中。MouseListeners只能在EDT中找到, -
所以你的意思是切换两个类,让所有的业务转到备用线程,让所有的鼠标都听它在哪里?
标签: java multithreading swing mouseevent