`
gmleegmlee
  • 浏览: 116763 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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;
    }

}




分享到:
评论

相关推荐

    Java开发技术大全(500个源代码).

    invokeMethod.java 同一个类中调用方法示例 invokeOther.java 类的外部调用方法示例 invokeStaticMethod.java 调用静态方法示例 localVariable.java 演示局部变量 localVSmember.java 局部变量与成员变量同名...

    JAVA面试题最全集

    给定一个C语言函数,要求实现在java类中进行调用。 45.如何获得数组的长度? 46.访问修饰符“public/private/protected/缺省的修饰符”的使用 47.用关键字final修饰一个类或者方法时,有何意义? 48.掌握类和...

    xml与反射.txt

    有了java反射机制,什么都好办了,只需要写一个dao类,四个方法,增删改查,传入不同的对象,就OK啦,无需为每一个 表都创建dao类,反射机制会自动帮我们完成剩下的事情,这就是它的好处。说白了,反射机制就是专门...

    java联想(中文)

    11.3.1 一个类方法提取器 11.4 总结 11.5 练习 第12章 传递和返回对象 12.1 传递句柄 12.1.1 别名问题 12.2 制作本地副本 12.2.1 按值传递 12.2.2 克隆对象 12.2.3 使类具有克隆能力 12.2.4 成功的克隆 12.2.5 ...

    Thinking in Java简体中文(全)

    11.3.1 一个类方法提取器 11.4 总结 11.5 练习 第12章 传递和返回对象 12.1 传递句柄 12.1.1 别名问题 12.2 制作本地副本 12.2.1 按值传递 12.2.2 克隆对象 12.2.3 使类具有克隆能力 12.2.4 成功的克隆 12.2.5 ...

    Thinking in Java 中文第四版+习题答案

    11.3.1 一个类方法提取器 11.4 总结 11.5 练习 第12章 传递和返回对象 12.1 传递句柄 12.1.1 别名问题 12.2 制作本地副本 12.2.1 按值传递 12.2.2 克隆对象 12.2.3 使类具有克隆能力 12.2.4 成功的克隆 12.2.5 ...

    java 编程入门思考

    11.3.1 一个类方法提取器 11.4 总结 11.5 练习 第12章 传递和返回对象 12.1 传递句柄 12.1.1 别名问题 12.2 制作本地副本 12.2.1 按值传递 12.2.2 克隆对象 12.2.3 使类具有克隆能力 12.2.4 成功的克隆 12.2.5 ...

    Java初学者入门教学

    11.3.1 一个类方法提取器 11.4 总结 11.5 练习 第12章 传递和返回对象 12.1 传递句柄 12.1.1 别名问题 12.2 制作本地副本 12.2.1 按值传递 12.2.2 克隆对象 12.2.3 使类具有克隆能力 12.2.4 成功的克隆 12.2.5 ...

    疯狂JAVA讲义

    学生提问:既然内部类是外部类的成员,是否可以为外部类定义子类,在子类中再定义一个内部类来重写其父类中的内部类? 211 6.7.4 局部内部类 211 6.7.5 匿名内部类 212 6.7.6 闭包(Closure)和回调 215 6.8 ...

    JAVA_Thinking in Java

    11.3.1 一个类方法提取器 11.4 总结 11.5 练习 第12章 传递和返回对象 12.1 传递句柄 12.1.1 别名问题 12.2 制作本地副本 12.2.1 按值传递 12.2.2 克隆对象 12.2.3 使类具有克隆能力 12.2.4 成功的克隆 12.2.5 ...

    java面试题

    37. 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 18 38. 比较truncate和delete 命令 18 39. 解释$ORACLE_HOME 和$ORACLE_BASE的区别? 19 40. session与cookie的区别和联系? 19 41. ...

    Java开发技术大全 电子版

    第8章Java的多线程机制266 8.1线程的概念266 8.1.1多线程的特点266 8.1.2线程的状态267 8.2Thread类268 8.2.1Thread类的构造方法268 8.2.2Thread类的常用方法268 8.3多线程程序的编写269 8.3.1利用Thread的...

    Java2核心技术.part5

    4.2.2 Java库中的GregorianCalendar类 4.2.3更改器方法与访问器方法 4.3用户自定义类 4.3.1一个Employee类 4.3.2多个源文件的使用 4.3.3解析Employee类 4.3.4从构造器开始 5.2.2相等测试与...

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm

    11.3.1 一个类方法提取器 11.4 总结 11.5 练习 第12章 传递和返回对象 12.1 传递句柄 12.1.1 别名问题 12.2 制作本地副本 12.2.1 按值传递 12.2.2 克隆对象 12.2.3 使类具有克隆能力 12.2.4 成功的克隆 12.2.5 ...

    2023java最新面试资料汇总

    面试题包括以下十九部分:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql...

    Think in Java(中文版)chm格式

    11.3.1 一个类方法提取器 11.4 总结 11.5 练习 第12章 传递和返回对象 12.1 传递句柄 12.1.1 别名问题 12.2 制作本地副本 12.2.1 按值传递 12.2.2 克隆对象 12.2.3 使类具有克隆能力 12.2.4 成功的克隆 ...

Global site tag (gtag.js) - Google Analytics