作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我需要调用从多个线程创建 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 教程中的更多信息:
关于Java-jxls-XLSTransformer线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29727096/
我是一名优秀的程序员,十分优秀!