日期:2014-05-20  浏览次数:20626 次

死循环? 一个java问题。。。
类A :

方法:

Java code
public  boolean update(byte[] bytes , Integer readerId){
        this.readerId = readerId;
        iob = IoBuffer.wrap(bytes);
        frameSize = bytes.length / 1024;
        if (bytes.length % 1024 > 0)  frameSize++;
        //设置类给 ContrlCodeFilter ,发送命令。
        ((CDMAControlCodeFilter) SpringContextTool.getBean("CDMAControlFilter")).setReaderUpdater(this);
        // 如果没有返回,等待...
        System.out.println("3333333333333333##########################");
        while (!opSuccess) {
        }
        return result;
    }




类 CDMAControlCodeFilter:

Java code

//更新基站程序的方法
private  ReaderUpdater readerUpdater;
        if(readerUpdater!=null){
                        //do something...
                   }




当前台调用了。 A 类中的 update 方法后 ,程序就死在那里,CDMAControlCodeFilter 类中的方法完全没有执行了。
javac.exe 占用CPU 立马升高 在 50~75% .

请问,是什么情况?

类A 是前台提交一个文件后,创建一个类A ,类A 把自己赋给 CDMAControlCodeFilter , CDMAControlCodeFilter中执行完一些操作后,让类A 返回结果给 Action。。


------解决方案--------------------
死循环啊~~~
如果要实时监测CDMAControlCodeFilter里的完成情况,用线程处理
------解决方案--------------------
采用线程处理,
死循环,资源总是没有释放,CPU肯定会升红旗。。