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;
}
}
Java 反射 函数,多线程调用一个类中不同的方法
最新推荐文章于 2021-03-07 07:40:31 发布