Java 反照 函数,多线程调用一个类中不同的方法
Java 反射 函数,多线程调用一个类中不同的方法
public void run() { try { Class reflectClass = Class.forName("com.zte.ums.zxnm01.common.alarmReport.AlarmDataExport"); Method m = reflectClass.getMethod(methodName, new Class[]{WritableSheet.class, WritableWorkbook.class, GenerationService.class}); m.invoke(reflectClass.newInstance(), new Object[]{ws, wwb, service}); // alarmDataExport.createHistoryReportByOlt(ws, wwb, service); isOk = true; } catch(Exception e) { e.printStackTrace(); } } public class AlarmThreadHis9 extends Thread { private AlarmDataExport alarmDataExport; private WritableSheet ws; private WritableWorkbook wwb; private GenerationService service; public boolean isOk = false; private String methodName; public AlarmThreadHis9(AlarmDataExport alarmDataExport, WritableSheet ws, WritableWorkbook wwb, GenerationService service, String methodName) { this.alarmDataExport = alarmDataExport; this.ws = ws; this.wwb = wwb; this.service = service; this.methodName = methodName; } public void run() { try { Method m = AlarmDataExport.class.getMethod(methodName, new Class[]{WritableSheet.class, WritableWorkbook.class, GenerationService.class}); m.invoke(alarmDataExport, new Object[]{ws, wwb, service}); // alarmDataExport.createHistoryReportByOlt(ws, wwb, service); isOk = true; } catch(Exception e) { e.printStackTrace(); } } } public class AlarmThreadHis extends Thread { private AlarmDataExport alarmDataExport; public AlarmThreadHis(AlarmDataExport alarmDataExport) { this.alarmDataExport = alarmDataExport; } DBOperation[] dbOperations = new DBOperation[8]; GenerationService[] services = new GenerationService[8]; String[] methods = new String[]{"createNeAlarmTotalReport","createHistoryReport", "createHistoryReportByTime","createInformReport", "createHistoryReportByOlt","createHistoryReportByOnu", "createHistoryReportByOnuDownLine","createHistoryReportByNeLinked"}; AlarmThreadHis9[] his9s = new AlarmThreadHis9[8]; public void run() { alarmDataExport.printInfoBeforeGenHisAlarmReport(); try { String templatePath = Utilities.getTemplateHisAlarmReportPath(); String destFile = alarmDataExport.getUtil().createHisAlarmReportPath(); WritableSheet ws = null; Workbook hisin = Workbook.getWorkbook(new File(templatePath)); WritableWorkbook wwb = Workbook.createWorkbook(new File(destFile), hisin); CellDataFormaterManager formaterManager = new CellDataFormaterManager(wwb); for(int i = 0; i < 8; i++) { dbOperations[i] = new DBOperation(); services[i] = new GenerationService(formaterManager, dbOperations[i]); his9s[i] = new AlarmThreadHis9(alarmDataExport, ws, wwb, services[i],methods[i]); his9s[i].start(); } // // alarmDataExport.createNeAlarmTotalReport(ws, wwb, service); // AlarmThreadHis1 his1 = new AlarmThreadHis1(alarmDataExport, ws, wwb, services[0]); // // alarmDataExport.createHistoryReport(ws, wwb, service); // AlarmThreadHis2 his2 = new AlarmThreadHis2(alarmDataExport, ws, wwb, services[1]); //// alarmDataExport.createHistoryReportByTime(ws, wwb, service); // AlarmThreadHis3 his3 = new AlarmThreadHis3(alarmDataExport, ws, wwb, services[2]); //// alarmDataExport.createInformReport(ws, wwb, service); // AlarmThreadHis4 his4 = new AlarmThreadHis4(alarmDataExport, ws, wwb, services[3]); //// alarmDataExport.createHistoryReportByOlt(ws, wwb, service); // AlarmThreadHis5 his5 = new AlarmThreadHis5(alarmDataExport, ws, wwb, services[4]); //// alarmDataExport.createHistoryReportByOnu(ws, wwb, service); // AlarmThreadHis6 his6 = new AlarmThreadHis6(alarmDataExport, ws, wwb, services[5]); //// alarmDataExport.createHistoryReportByOnuDownLine(ws, wwb, service); // AlarmThreadHis7 his7 = new AlarmThreadHis7(alarmDataExport, ws, wwb, services[6]); //// alarmDataExport.createHistoryReportByNeLinked(ws, wwb, service); // AlarmThreadHis8 his8 = new AlarmThreadHis8(alarmDataExport, ws, wwb, services[7]); // // his1.start(); // his2.start(); // his3.start(); // his4.start(); // his5.start(); // his6.start(); // his7.start(); // his8.start(); // // while(!his1.isOk || !his2.isOk|| !his3.isOk|| !his4.isOk|| !his5.isOk|| !his6.isOk|| !his7.isOk|| !his8.isOk) // { // System.out.println("running ..." + new Date().toLocaleString()); // Thread.sleep(6000); // } while(!isOK()) { System.out.println("running ..." + new Date().toLocaleString()); Thread.sleep(6000); } for(int i = 0; i < dbOperations.length; i++) { dbOperations[i].closeDB(); } wwb.write(); alarmDataExport.closeBook(hisin, wwb); } catch(Exception e) { e.printStackTrace(); } System.out.println("running:"+ new Date().toLocaleString()); alarmDataExport.printInfoAfterGenHisAlarmReport(); } private boolean isOK() { for(int i = 0; i < his9s.length; i++) { if(!his9s[i].isOk) { return false; } } return true; } }