您现在的位置: 无忧电子商务网 >> 信息学院 >> 程序开发 >> js >> 正文

Java性能优化技巧集锦(2)

作者:作者:未…    信息学院来源:网络收集    点击数:    更新时间:2006-8-27 我要参与讨论

  size调用从stub程序传递到Applet
       resize(width, height);
  }
}



编译后的代码小于2K,下载速度很快。代码中有几个地方值得注意。首先,PreLoader实现了AppletStub接口。一般地,Applet从调用者判断自己的codebase。在本例中,我们必须调用setStub()告诉Applet到哪里提取这个信息。另一个值得注意的地方是,AppletStub接口包含许多和Applet类一样的方法,但appletResize()方法除外。这里我们把对appletResize()方法的调用传递给了resize()方法。

3.3 在画出图形之前预先装入它

ImageObserver接口可用来接收图形装入的提示信息。ImageObserver接口只有一个方法imageUpdate(),能够用一次repaint()操作在屏幕上画出图形。下面提供了一个例子。


public boolean imageUpdate(Image img, int flags, int x, int y, int w, int h) {
         if ((flags & ALLBITS) !=0 {
              repaint();
         }
         else if (flags & (ERROR |ABORT )) != 0) {
              error = true;
              // 文件没有找到,考虑显示一个占位符
              repaint();
          }
          return (flags & (ALLBITS | ERROR| ABORT)) == 0;
}



当图形信息可用时,imageUpdate()方法被调用。如果需要进一步更新,该方法返回true;如果所需信息已经得到,该方法返回false。

3.4 覆盖update方法

update()方法的默认动作是清除屏幕,然后调用paint()方法。如果使用默认的update()方法,频繁使用图形的应用可能出现显示闪烁现象。要避免在paint()调用之前的屏幕清除操作,只需按照如下方式覆盖update()方法:


public void update(Graphics g) {
    paint(g);
}



更理想的方案是:覆盖update(),只重画屏幕上发生变化的区域,如下所示:


public void update(Graphics g) {
    g.clipRect(x, y, w, h);
    paint(g);
}



3.5 延迟重画操作

对于图形用户界面的应用来说,性能低下的主要原因往往可以归结为重画屏幕的效率低下。当用户改变窗口大小或者滚动一个窗口时,这一点通常可以很明显地观察到。改变窗口大小或者滚动屏幕之类的操作导致重画屏幕事件大量地、快速地生成,甚至超过了相关代码的执行速度。对付这个问题最好的办法是忽略所有“迟到”的事件。

建议在这里引入一个数毫秒的时差,即如果我们立即接收到了另一个重画事件,可以停止处理当前事件转而处理最后一个收到的重画事件;否则,我们继续进行当前的重画过程。

如果事件要启动一项耗时的工作,分离出一个工作线程是一种较好的处理方式;否则,一些部件可能被“冻结”,因为每次只能处理一个事件。下面提供了一个事件处理的简单例子,但经过扩展后它可以用来控制工作线程。


public static void runOnce(String id, final long milliseconds) {
         synchronized(e_queue) { // e_queue: 所有事件的集合
               if (!e_queue.containsKey(id)) {
                      e_queue.put(token, new LastOne());
               }
          }
          

上一页  [1] [2] [3] [4] 下一页

在google里搜索更多Java性能优化技巧集锦(2)

Google
Web www.51ec.org
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
我来说两句 对此文章发表了评论
  昵 称: *必填    ·注册用户·
  评 分: 1分 2分 3分 4分 5分     严禁发表危害国家安全、政治、黄色淫秽等内容的评论,用户需对自己在使用本网站服务过程中的行为承担法律责任。本站管理员有权保留或删除评论内容,评论内容只代表机友个人观点,与本网站立场无关。  
评 论
内 容

 
评论列表 (最新 评论仅限网友观点!)

推荐文章
  • 此栏目下没有推荐信息学院
  • 供求信息




    | 设为首页 | 加入收藏 | 关于我们 | 广告服务 | 联系方式 | 友情链接 | 版权申明