java程序运行速度,使用eclipse开发环境。

请问一下,同一个快速排序程序,为啥用swing控件基于JFrame的和直接在控制台输出的,时间差那么多。用控件写的时间特别长。。同样是用控件,选择排序,冒泡排序都比快排快。

6个回答

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class mainFrom {

JButton btnQuickSort;
JFrame mainFrame;
public mainFrom() {
    initPage();
    btnQuickSort = new JButton("开始快排");
    btnQuickSort.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            Thread quickThread = new Thread(new Runnable() {

                @Override
                public void run() {
                    //TODO 实现排序代码

                }
            });
            quickThread.start();
        }
    });
}
private void initPage() {
    // TODO 初始化页面
}

}

swing程序所有的界面事件都是在一个线程中处理,你的排序阻塞了界面处理线程,所以在排序没有结束的时候,界面事件处理线程处在阻塞状态。
像上面的代码,你把排序的逻辑放在一个线程中,这样界面就不会卡顿了。

qq_29637191
彩笔梳子 感谢哈。我回去试试。有问题再问你哈。真心感谢。有其他问题也请问你不介意吧?你是?学生还是
3 年多之前 回复

再加一句,用控件写的只要一按排序,久要卡着几十秒,最后出来的时间也是几十秒,特别长

你的代码呢?肯定是代码写得有问题

qq_29637191
彩笔梳子 排序算法都是一样的,就是直接控制台输出没问题,很快,但是对话框程序就要停顿很久
3 年多之前 回复

控制台的输出也是需要时间的

swing页面处理是一个线程,看看你的代码 处理界面事件和处理排序的代码是不是在一个线程中

qq_29637191
彩笔梳子 虽然没理解但是感觉是这个原因,时间处理的函数里还是调用一个快排的函数,这样是。。。?
3 年多之前 回复
qq_29637191
彩笔梳子 我是问程序效率。。。环境早弄好了
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问