gpt4 book ai didi

java - KML marshal 生成零长度文件

转载 作者:行者123 更新时间:2023-12-01 05:09:08 25 4
gpt4 key购买 nike

在 Java 代码中,我生成一个线程,每秒从模拟器收集 DIS 数据包,并尝试格式化 KML 输出。在我的 Java 代码中,我正在创建一个文档,其中包含样式、地标和多边形。每秒一次,我可以看到“marshal”API 例程确实使用我的数据创建了一个 KML 文件。然而,有时它会随机创建一个完整的文件,有时它会创建一个零长度文件。即使当我关闭 DIS 数据包生成器并让 Java 代码仍然运行时,它也会继续随机创建一个完整的文件,有时会创建一个零长度文件。当我将计时器从每秒一次更改为每 10 秒一次时,该行为每 10 秒发生一次。

我尝试对 File 对象和 OutputStream 对象使用 marshal() ;同样奇怪的行为。

最佳答案

这可能是由于并发访问造成的。创建编码器是一项昂贵的操作,需要时间,而且据我所知编码器不是线程安全的。我在 ReSTLet 中使用 jaxb 连接器,再加上 JAK,那就是 good example关于如何创建编码器并以线程安全的方式缓存它们:

/** Use thread identity to preserve safety of access to marshalers. */
private final ThreadLocal<javax.xml.bind.Marshaller> marshaller = new ThreadLocal<javax.xml.bind.Marshaller>() {

了解如何在同步方法中创建编码器,然后将其存储在 ThreadLocal 变量中。

关于java - KML marshal 生成零长度文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12267393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com