gpt4 book ai didi

Java-jxls-XLSTransformer线程安全

转载 作者:行者123 更新时间:2023-11-30 08:15:33 27 4
gpt4 key购买 nike

如果我需要调用从多个线程创建 xls 文件的方法 - 我可以使用 XLSTransformer 作为同步(或者甚至不使用) )类的字段?如果 XLSTransformer.transformXLS() 方法真的很昂贵,或者可以在我需要创建 xls 时随时创建一个新实例?

这就是我要说的:

private synchronized XLSTransformer transformer = new XLSTransformer();

public void createXls() {
//...
transformer.transformXLS("template.xls", beans, "result.xls");
}

如果我从多个线程调用 createXls() 不会中断吗?

最佳答案

没有任何注释表明 XLSTransformer 是线程安全的,因此您可以假设它不是,或者分析 jXLS 源代码 ( link )。但是,请注意,每个库版本中的情况可能有所不同,您应该在每次更新后再次检查。

如果是关于您的示例,则 synchronized 关键字是字段的非法修饰符。您可以将它与方法一起使用来锁定 this 对象:

public synchronized void createXls() {
//...
}

或者当您可以选择被视为锁定的对象时使用 block :

public void createXls() {
//...
synchronized( transformer ) {
//...
}
//...
}

Java 教程中的更多信息:

  1. Synchronized Methods
  2. Intrinsic Locks and Synchronization

关于Java-jxls-XLSTransformer线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29727096/

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