Java-jxls-XLSTransformer线程安全
如果我需要调用一个从多个线程创建Java-jxls-XLSTransformer线程安全,java,multithreading,concurrency,synchronized,jxls,Java,Multithreading,Concurrency,Synchronized,Jxls,如果我需要调用一个从多个线程创建xls文件的方法,我可以将XLSTransformer用作类的synchronized(甚至不)字段吗?如果XLSTransformer.transformXLS()方法非常昂贵,或者在需要创建xls的任何时候都可以创建一个新实例 这就是我要说的: private synchronized XLSTransformer transformer = new XLSTransformer(); public void createXls() { //...
xls
文件的方法,我可以将XLSTransformer
用作类的synchronized
(甚至不)字段吗?如果XLSTransformer.transformXLS()
方法非常昂贵,或者在需要创建xls
的任何时候都可以创建一个新实例
这就是我要说的:
private synchronized XLSTransformer transformer = new XLSTransformer();
public void createXls() {
//...
transformer.transformXLS("template.xls", beans, "result.xls");
}
如果我从多个线程调用
createXls()
,它不会崩溃吗?没有一点值得注意的是,XLSTransformer
是线程安全的,所以您可以假设它不是,或者分析jXLS源代码()。但是,请注意,在每个lib版本中可能会有所不同,您应该在每次更新后再次检查
如果是关于您的示例,synchronized
关键字是字段的非法修饰符。您可以将其与锁定此对象的方法一起使用:
public synchronized void createXls() {
//...
}
或者,当您可以选择被视为锁定的对象时,使用块:
public void createXls() {
//...
synchronized( transformer ) {
//...
}
//...
}
Java教程中的更多信息: