我暂时不是很能整理好自己的思路,大致是这样的:
我希望我的主线程(swing线程)阻塞,然后等待某个事件的发生然后被唤醒。
例如我有一段代码是这样写的:
.....
final Object lock = new Object();
svgCanvas.addSVGDocumentLoaderListener(new
SVGDocumentLoaderAdapter() {
public void documentLoadingCompleted(
SVGDocumentLoaderEvent
e) {
lock.notifyAll();
}
});
File file = new File("filter.svg");
svgCanvas.loadSVGDocument(file.toURL().toString());
lock.wait();
..............
在我的loadSVGDocument执行完以后若干秒内,documentLoadingCompleted的相应事件应当会被触发,但是事实上我的主线程就永远诸塞在这里了。我换了Thread.sleep,但是在线程休眠的过程中,我同样无法触发事件。是不是wait了以后,线程也会无法接受任何事件呢?请各位回答我的问题,描述不清,见笑了:)
我希望我的主线程(swing线程)阻塞,然后等待某个事件的发生然后被唤醒。
例如我有一段代码是这样写的:
.....
final Object lock = new Object();
svgCanvas.addSVGDocumentLoaderListener(new
SVGDocumentLoaderAdapter() {
public void documentLoadingCompleted(
SVGDocumentLoaderEvent
e) {
lock.notifyAll();
}
});
File file = new File("filter.svg");
svgCanvas.loadSVGDocument(file.toURL().toString());
lock.wait();
..............
在我的loadSVGDocument执行完以后若干秒内,documentLoadingCompleted的相应事件应当会被触发,但是事实上我的主线程就永远诸塞在这里了。我换了Thread.sleep,但是在线程休眠的过程中,我同样无法触发事件。是不是wait了以后,线程也会无法接受任何事件呢?请各位回答我的问题,描述不清,见笑了:)
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货