`
chourentang
  • 浏览: 56541 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

java 优化之一:Buffer的使用

    博客分类:
  • Java
阅读更多
1.在java I/O 中,Buffer的使用,使用buffer,文件的读写效率提高一倍左右

   
public void writeFile() {
        try {
            FileWriter fw = new FileWriter("file.txt");
            
            long beginTime = System.currentTimeMillis();
            
            for(int i = 0; i < 10000; i++) {
                fw.write("testline " + i + "\n");
            }
            
            fw.close();
            
            System.out.println("Time spend: " + (System.currentTimeMillis() - beginTime));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    public void writeWithBuffer() {
        try {
            BufferedWriter bw = new BufferedWriter(new FileWriter("file.txt"));
            long beginTime = System.currentTimeMillis();
            
            for(int i = 0; i < 10000; i++) {
                bw.write("testline " + i + "\n");
            }
            
            bw.close();
            
            System.out.println("Time spend: " + (System.currentTimeMillis() - beginTime));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }



2.对象的缓存

1)无缓存实现
public class NoBufferMovingCircle extends JApplet implements Runnable {
    private static final long serialVersionUID = -1081283643259866574L;
    
    Image screenImage = null;
    Thread thread;
    int x = 5;
    int move = 1;
    
    @Override
    public void init() {
        super.init();
        screenImage = createImage(230, 160);
    }
    
    @Override
    public void start() {
        super.start();
        if(thread == null) {
            thread = new Thread(this);
            thread.start();
        }
    }
    @Override
    public void run() {
        try {
            while(true) {
                x += move;
                if((x > 105) || (x < 5)) {
                    move *= -1;
                }
                repaint();
                Thread.sleep(10);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    public void drawDircle(Graphics draw) {
        Graphics2D g = (Graphics2D)draw;
        g.setColor(Color.red);
        g.fillRect(0, 0, 200, 100);
        g.setColor(Color.GREEN);
        g.fillOval(x, 5, 90, 90);
    }
    
    @Override
    public void paint(Graphics g) {
        g.setColor(Color.GRAY);
        g.fillRect(0, 0, 200, 100);
        drawDircle(g);
    }
}

2)有缓存实现
    对Graphics对象缓存后applet图片显示顺畅
public class BufferMovingCircle extends JApplet implements Runnable {
    private static final long serialVersionUID = -1081283643259866574L;
    
    Image screenImage = null;
    Thread thread;
    int x = 5;
    int move = 1;
    Graphics doubleBuffer = null;
    
    @Override
    public void init() {
        super.init();
        screenImage = createImage(230, 160);
        doubleBuffer = screenImage.getGraphics();
    }
    
    @Override
    public void start() {
        super.start();
        if(thread == null) {
            thread = new Thread(this);
            thread.start();
        }
    }
    @Override
    public void run() {
        try {
            while(true) {
                x += move;
                if((x > 105) || (x < 5)) {
                    move *= -1;
                }
                repaint();
                Thread.sleep(10);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    public void drawDircle(Graphics draw) {
        Graphics2D g = (Graphics2D)draw;
        g.setColor(Color.red);
        g.fillRect(0, 0, 200, 100);
        g.setColor(Color.GREEN);
        g.fillOval(x, 5, 90, 90);
    }
    
    @Override
    public void paint(Graphics g) {
        doubleBuffer.setColor(Color.GRAY);
        doubleBuffer.fillRect(0, 0, 200, 100);
        drawDircle(doubleBuffer);
        g.drawImage(screenImage, 0, 0, this);
    }
}
分享到:
评论

相关推荐

    java源码包2

     使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作...

    java源码包---java 源码 大量 实例

     使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作...

    JAVA上百实例源码以及开源项目

     使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作...

    java源码包4

     使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作...

    java源码包3

     使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作...

    JAVA上百实例源码以及开源项目源代码

     使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...

    java 面试题 总结

    Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应...

    超级有影响力霸气的Java面试题大全文档

    Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应...

    SQLServer2008查询性能优化 2/2

    《SQL Server 2008查询性能优化》指出的性能要点之一是数据库随着用户和数据的日益增多而进行扩展的必要性。你需要理解性能低下的起因。以及识别并修复它们的方法。《SQL Server 2008查询性能优化》将帮助你: 使用...

    SQLServer2008查询性能优化 1/2

    《SQL Server 2008查询性能优化》指出的性能要点之一是数据库随着用户和数据的日益增多而进行扩展的必要性。你需要理解性能低下的起因。以及识别并修复它们的方法。《SQL Server 2008查询性能优化》将帮助你: 使用...

    Oracle9i的init.ora参数中文说明

    该参数是构成某个例程的总 SGA 要求的若干参数之一。 默认值 : 派生: SESSIONS 参数的值 (如果正在使用共享服务器体系结构); 否则为 0。 Mts_multiple_listeners: 说明: 指定多个监听程序的地址是分别指定的, ...

    Linux多线程服务端编程:使用muduo C++网络库

    《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...

Global site tag (gtag.js) - Google Analytics