java监控函数执行时间

时间:2021-10-28 09:03:13

java监控函数执行时间

http://blog.csdn.net/ycg01/article/details/1467542

2006-12-29 16:45 4372人阅读 评论(1) 收藏 举报
java监控函数执行时间 分类:
点滴(12) java监控函数执行时间

版权声明:本文为博主原创文章,未经博主允许不得转载。

由于一些特殊需要,对执行流加上超时控制.以自己的水平想了下面的方法.也许有更好的通用方法,只是我不知道.呵,写出来,供有需要的人参考.

TimeoutThread.java

java监控函数执行时间
java监控函数执行时间public class TimeoutThread{
java监控函数执行时间    long milliseconds;
java监控函数执行时间    private void notifyObj(){
java监控函数执行时间        synchronized(this){
java监控函数执行时间            notify();
java监控函数执行时间        }
java监控函数执行时间    }
java监控函数执行时间    
java监控函数执行时间    public TimeoutThread(long milliseconds){
java监控函数执行时间        this.milliseconds = milliseconds;
java监控函数执行时间    }
java监控函数执行时间    
java监控函数执行时间    public void mydo(){
java监控函数执行时间        
java监控函数执行时间    }
java监控函数执行时间    
java监控函数执行时间    Thread runthread = null;
java监控函数执行时间    private void myrun(){
java监控函数执行时间        
java监控函数执行时间        class MyThread extends Thread{
java监控函数执行时间            public void run(){
java监控函数执行时间                try{
java监控函数执行时间                    //监控程序执行时间不得超过
java监控函数执行时间                    Thread.sleep(milliseconds);
java监控函数执行时间                }catch(Exception exp){
java监控函数执行时间                    //exp.printStackTrace();
java监控函数执行时间                }
java监控函数执行时间                //如果程序超出时间,停止原线程
java监控函数执行时间                runthread.interrupt();
java监控函数执行时间                
java监控函数执行时间                //防止InterruptedException被捕获而杀不了,尝试20次
java监控函数执行时间                int i=0;
java监控函数执行时间                while(runthread.isAlive()){
java监控函数执行时间                    try{
java监控函数执行时间                    Thread.sleep(50);
java监控函数执行时间                    }catch(Exception exp){}
java监控函数执行时间                    runthread.interrupt();
java监控函数执行时间                    i++;
java监控函数执行时间                    if(i>20){
java监控函数执行时间                        break;
java监控函数执行时间                    }
java监控函数执行时间                    System.out.println(i);
java监控函数执行时间                }
java监控函数执行时间                
java监控函数执行时间                notifyObj();
java监控函数执行时间            }
java监控函数执行时间        }
java监控函数执行时间        //将被监视线程指定为当前线程
java监控函数执行时间        runthread = Thread.currentThread();
java监控函数执行时间        //创建监控线程,设为非阻塞线程
java监控函数执行时间        MyThread timeOutThread = new MyThread();
java监控函数执行时间        timeOutThread.setDaemon(true);
java监控函数执行时间        timeOutThread.start();
java监控函数执行时间        mydo();
java监控函数执行时间        timeOutThread.interrupt();
java监控函数执行时间    }
java监控函数执行时间    
java监控函数执行时间    public void run(){
java监控函数执行时间        try{
java监控函数执行时间            new Thread(){
java监控函数执行时间                public void run(){
java监控函数执行时间                    try{
java监控函数执行时间                        myrun();
java监控函数执行时间                        notifyObj();
java监控函数执行时间                    }catch(Exception exp){
java监控函数执行时间                        notifyObj();
java监控函数执行时间                        exp.printStackTrace();
java监控函数执行时间                    }
java监控函数执行时间                }
java监控函数执行时间            }.start();
java监控函数执行时间            synchronized(this){
java监控函数执行时间                wait();
java监控函数执行时间            }
java监控函数执行时间        }catch(Exception ex){
java监控函数执行时间            ex.printStackTrace();
java监控函数执行时间        }
java监控函数执行时间    }
java监控函数执行时间}
java监控函数执行时间

TT.java

java监控函数执行时间
java监控函数执行时间public class TT {
java监控函数执行时间
java监控函数执行时间    public static String getName(long ms){
java监控函数执行时间        final StringBuffer sb = new StringBuffer();
java监控函数执行时间        new TimeoutThread(ms){
java监控函数执行时间            public void mydo(){    
java监控函数执行时间                try{
java监控函数执行时间                    Thread.sleep(2000);
java监控函数执行时间                    sb.append("hello world");
java监控函数执行时间                }catch(Exception exp){
java监控函数执行时间                    
java监控函数执行时间                }
java监控函数执行时间            }
java监控函数执行时间        }.run();
java监控函数执行时间        return sb.toString();
java监控函数执行时间    }
java监控函数执行时间    /**
java监控函数执行时间     * @param args
java监控函数执行时间     */
java监控函数执行时间    public static void main(String[] args) {
java监控函数执行时间        // TODO Auto-generated method stub
java监控函数执行时间        System.out.println("begin 5000 method");
java监控函数执行时间        new TimeoutThread(5000){
java监控函数执行时间            public void mydo(){    
java监控函数执行时间                //该函数不能将InterruptedException捕获而不抛出,否则,无法起到监控效果
java监控函数执行时间                //java.lang.InterruptedException
java监控函数执行时间                //此函数显示了不能正确被关闭
java监控函数执行时间                for(int i=0;i<20;i++){
java监控函数执行时间                    try{
java监控函数执行时间                        Thread.sleep(1000);
java监控函数执行时间                    }catch(Exception exp){
java监控函数执行时间                        //exp.printStackTrace();
java监控函数执行时间                    }
java监控函数执行时间                    System.out.println("step:"+i);
java监控函数执行时间                }
java监控函数执行时间                System.out.println("eeeee:");
java监控函数执行时间            }
java监控函数执行时间        }.run();
java监控函数执行时间        
java监控函数执行时间        System.out.println("end method");
java监控函数执行时间        
java监控函数执行时间        System.out.println("begin 5000 method");
java监控函数执行时间        new TimeoutThread(5000){
java监控函数执行时间            public void mydo(){    
java监控函数执行时间                //该函数不能将InterruptedException捕获,否则,无法起到监控效果
java监控函数执行时间                //java.lang.InterruptedException
java监控函数执行时间                try{
java监控函数执行时间                    for(int i=0;i<10;i++){
java监控函数执行时间                        Thread.sleep(1000);
java监控函数执行时间                        System.out.println("step:"+i);
java监控函数执行时间                    }
java监控函数执行时间                }catch(Exception exp){
java监控函数执行时间                    //exp.printStackTrace();
java监控函数执行时间                }
java监控函数执行时间            }
java监控函数执行时间        }.run();
java监控函数执行时间        
java监控函数执行时间        System.out.println("end method");
java监控函数执行时间        
java监控函数执行时间        System.out.println("get name is:"+getName(1000));
java监控函数执行时间        System.out.println("get name is:"+getName(5000));
java监控函数执行时间        
java监控函数执行时间    }
java监控函数执行时间
java监控函数执行时间}
java监控函数执行时间