“导出excel”压力测试多并发引起的多线程冲突问题
业务系统已开发完毕,正在接受客户的业务测试和性能测试。
业务测试,导出excel没有问题;但是在进行多并发压力测试时,发生了excel文件读写问题,查看代码,主要是类的属性冲突问题,大概代码如下。
package test;public class TestExcelExport {private int rowLine = 0;//全局变量,行号private Object workbookObj = null;//全局变量private Object sheetObj = null;//全局变量//synchronized ?? lock ??public void doExport(String unitid) {initVar();writeExcelTableHeader();loopUnitAndWriteExcel(unitid);sheetObj = "sheetObj.close()";workbookObj = "workbookObj.close()";}public void initVar() {rowLine = 0;workbookObj = "createWorkbook()";sheetObj = "workbookObj.createSheet(0)";}public void writeExcelTableHeader() {System.out.println("sheetObj.addCell(xxx,yyy)");}//synchronized ?? lock ?? //获取机构,并递归下级机构public void loopUnitAndWriteExcel(String unitid) {this.rowLine++;System.out.println("sheetObj.addCell("+unitid+","+rowLine+")");if (this.rowLine > 65536) {sheetObj = "workbookObj.createSheet(1)";}unitid = "new-value";loopUnitAndWriteExcel(unitid);//获取机构人员System.out.println("sheetObj.addCell(unit_member)");}}