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;
}
}
分享到:
相关推荐
本话题将深入探讨如何在Android中使用JNI进行多线程编程,并实现native方法对Java函数的回调。 1. **JNI基础知识**: - JNI是Java平台的一部分,为Java应用程序提供了与本地代码交互的能力。开发者可以通过JNI在...
Java反射和线程是Java编程中的两个核心概念,它们在实际开发中有着广泛的应用。反射机制允许我们在运行时检查类、接口、字段和方法的信息,甚至动态调用方法和创建对象,极大地增强了Java的灵活性。而线程则是并发...
本文将深入探讨Java中的三个核心概念:多线程、反射以及Java 8的新特性,这些都是Java开发者必须掌握的重要知识点。 **多线程** 多线程是Java的一大亮点,它允许程序同时执行多个任务,提高系统资源的利用率和程序...
6. **多线程**:Thread类和Runnable接口是Java并发编程的基础,函数速查会涵盖start()、join()、sleep()等线程控制方法。 7. **反射**:Java反射API允许程序在运行时动态访问和修改类的信息,如Class类的forName()...
Java的多线程模型基于线程类`Thread`,可以创建并控制多个同时运行的线程。 #### 创建线程的方式 - 实现`Runnable`接口。 - 继承`Thread`类。 #### 线程生命周期 线程有多种状态:新建、就绪、运行、阻塞和终止...
在Java编程中,反射(Reflection)是一个强大的工具,它允许我们在运行时检查和操作类、接口、字段和方法。然而,反射操作通常比直接的Java代码执行慢,因为它涉及到动态类型检查和方法调用。因此,为了提高性能,...
- `String`是Java中的一个非常重要的类,不可变性是其主要特性。常用的方法有`length()`、`substring()`、`indexOf()`、`replace()`、`trim()`等,用于获取长度、截取子串、查找替换字符等。 3. **数组(Array)** ...
最后,反射机制是Java的一个强大特性,允许我们在运行时检查类、接口、字段和方法的信息,并能动态调用方法和访问字段。`Class`类和`java.lang.reflect`包中的方法是实现反射的核心。 以上就是“java常用函数实战...
invokeMethod.java 同一个类中调用方法示例 invokeOther.java 类的外部调用方法示例 invokeStaticMethod.java 调用静态方法示例 localVariable.java 演示局部变量 localVSmember.java 局部变量与成员变量同名...
7. **多线程**:Java提供了`Thread`类和`Runnable`接口来支持并发编程,函数如`start()`、`sleep()`、`join()`和同步方法如`synchronized`。 8. **IO/NIO**:Java的`java.io`和`java.nio`包提供了非阻塞I/O操作,如...
Java函数速查中文版是一个非常实用的资源,对于学习和工作中快速查找Java编程中的函数用法具有很高的价值。这个压缩包文件包含了一份详尽的Java函数参考指南,它以中文形式呈现,使得中国开发者能够更加方便地理解和...
在IT行业中,Java多线程和设计模式是两个至关重要的概念,它们对于构建高效、可扩展的软件系统具有决定性作用。而反射机制和动态代理则进一步增强了Java平台的灵活性和可扩展性。这些主题都是Java开发人员必备的知识...
- 重载发生在同一个类中,方法名相同但参数列表不同。 - 重写发生在子类中,方法名、返回类型和参数列表都与父类相同。 13. **equals和hashCode**: - `equals()`用于比较对象内容是否相等,`hashCode()`用于...
在Java中,函数(或称为方法)是实现特定功能的代码块,可以被多次调用,提高了代码的重用性。本资源"Java 计算机语言函数应用"深入探讨了Java API,这是编写Java程序的核心部分,包含了大量的类和接口,为开发者...
Java反射API是Java语言提供的一种强大功能,它允许程序在运行时检查类、接口、字段和方法的信息,并能动态地创建对象、调用方法。然而,反射操作本身并不自动支持线程安全,因此在多线程环境下使用反射时,开发者...
Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法。Java 反射机制主要提供了以下功能: 1. 在运行时判断任意一个对象所属的类。 2....
10. **多线程**:Java内置了对多线程的支持,通过Thread类或Runnable接口可以创建并运行多个执行线程。 11. **反射**:反射允许在运行时检查类、接口、字段和方法的信息,甚至动态调用方法,是Java的一种强大特性。...
- 多态:一个接口可以有多种不同的实现,允许同一方法根据对象类型表现出不同行为。 3. **包(Package)与导入** - 包:组织Java类的一种方式,避免命名冲突。例如,`java.util`包包含了集合框架和其他实用工具类...