首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否等待来自第三方库(OpenMap/Java)的线程完成?

是否等待来自第三方库(OpenMap/Java)的线程完成?
EN

Stack Overflow用户
提问于 2010-01-21 01:29:51
回答 3查看 217关注 0票数 0

我的应用程序目前有一个有趣的问题。

在这个特定的例子中,我们的代码需要创建我们的OpenMap工具,加载它的层(在后台),并截取一个特定兴趣点的屏幕快照。

然而,问题是OpenMap库创建了自己的线程来加载这些层,因此返回到我们的代码立即截图,大多数情况下截图是空的或不完整的。

我们应用程序的伪代码如下所示:

代码语言:javascript
复制
check database for layers
load layers using OpenMap
take screenshot of map at point of interest

我假设某种线程管理是有序的,但是当库正在使用我们无法访问的自己的线程时,如何做到这一点呢?此外,OpenMap没有返回或标志来指示这些线程已经结束(我已经看到了)。

有什么建议吗?

谢谢

EN

回答 3

Stack Overflow用户

发布于 2010-01-21 01:36:18

我不知道OpenMap,但正常的方式是在第三方库中注册一些回调。在Java中,这意味着实现一个接口,并在调用API方法的对象上注册为侦听器。你(几乎?)永远不需要(或者应该)了解一些关于库的内部线程处理!

票数 1
EN

Stack Overflow用户

发布于 2010-01-21 10:42:49

可以为OpenMap编写层,以便它们可以响应投影查询并呈现到java.awt.Graphics对象中。扩展OMGraphicHandler层,覆盖prepare()方法,以便它返回该层上投影集的OMGraphicList。如果调用Layer.renderDataForProjection(),将呈现在prepare中返回的OMGraphicList。

com.bbn.openmap.image.ImageServer是一个很好的对象,可用于管理层的图像创建。

票数 1
EN

Stack Overflow用户

发布于 2011-10-26 08:49:52

在MapBean完成图像生成之前,第三方jpeg解压程序在提取图像时遇到同样的问题。遵循后面关于调用的提示,并在我的层处理代码和导出到图形代码之间添加了以下代码:

代码语言:javascript
复制
//...OpenMap editing code stops here ...

final Runnable doWaitUntilTheMapBeanIsFinishedRendering = new Runnable() {
   public void run()
   {
       System.out.println("Ding, fries are done!");
   } 
};

try
{
    SwingUtilities.invokeAndWait( doWaitUntilTheMapBeanIsFinishedRendering );
}
catch( Exception e )
{
    e.printStackTrace();
}

byte[] image = JPEGImageFormatter.getImageFromMapBean( mapbean );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2103471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档