hhybtczc 2010-12-25 07:38
浏览 264
已采纳

怎样用多线程实现文件搜索呢??

[size=large][color=indigo]老师布置的作业是用java编写一个程序实现文件搜索,这个没有多大问题,界面也画好了,功能也实现了,
但是要搜索如C盘东西很多的大目录时候,就会由于运算时间的原因,点下去“搜索按钮”,其他的按钮就会不能用
怎样用多线程解决这个问题呢?
而且,搜索c盘时想要点击按钮停止搜索,该怎样编写代码呢?
还有,怎样才能让搜索出来的内容逐条显示在label里呢??就像安装软件时左下方那个状态栏上快速显示当前正在复制的文件一样??
请指教[/color][/size]

  • 写回答

1条回答 默认 最新

  • squirrelRao 2010-12-25 10:04
    关注

    像你所说的使用多线程机制是完全可以实现的。
    在主线程基础上建立一个子线程A负责搜索文件及目录。
    在线程A执行搜索期间,主线程并不往下执行,而是一直等到子线程A执行完搜索后才结束,在此期间,主线程定时循环做两件事情,一件事是查看搜索结果和搜索进度(搜索结果和搜索精度的相关变量在主线程中声明,然后传入子线程A,这样主线程即可获得),第二件事是监听鼠标事件,如果出发“停止”按钮,则终止线程A。

    请看下面的参考实现代码,希望对楼主有所帮助

    //主线程(也就是执行计算进入的线程)
    // 主线程监控整体运行情况
    。。。。。。。。。
    search_result = new ArrayList();
    SearchTread thread_A = new SearchTread()
    thread_A.setSearch_result(search_result);

        while (true) {
                       Thread curThread = Thread.currentThread();
            synchronized (curThread) {
                               search_result = thread_A.getSearch_result();
                               this.show_result();
                if (!thread_A.isAlive()) //子线程A是否存活
                    break;
                Thread.sleep(2000);
            }
        }
    

    。。。。。。。。

    //子线程A
    public class SearchTread extends Thread
    {
    private ArrayList search_result
    public void run()
    {
    ..................//search the file
    }
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条