1.如何获得当前线程池中的某个线程;
2.如何将当前线程池中运行的各个线程的“内部数据”反映到界面上。
    场景如下:线程池中有5个线程,而我有100个“任务”,每一个“任务”扫描一个目录(各任务扫描的目录不会重复),我如何在界面上的“ListView”中显示出所有的当前任务(5个),特别是显示出每个任务所扫描文件的个数的准实时信息;我又如何在界面上控制每个任务(5个)停止和重新开始呢?
请各位不吝赐教!

解决方案 »

  1.   

    扫描目录directory和文件个数fileNum做为线程的成员变量,目录可以通过构造方法传入,fileNum默认为0
    扫描一个文件后将fileNum++
    System.out.print(Thread.currentThread().getName());
    System.out.print("正在扫描目录"+directory);
    System.out.println("已扫描文件个数"+fileNum);
      

  2.   

    如果类似map的话
    用key来做标识符,用value存储对应的线程
    总归有个集合用来遍历,如果没有,那只能说它不支持遍历查询。问题二可以用观察者模式
    每个线程处理目录的信息应保存于该线程中,并确定线程间独立
    如果要控制停止或开始,就遍历集合,拿到thread进行停止或重新开始操作
      

  3.   


    兄弟,你的三条语句是放在“任务”(Runnable或Callable)中执行的,自然会容易实现。我的需求是怎样把工作线程中正在执行的任务的相关数据(如你代码中提到的fileNum)反映到主线程GUI中--而且是GUI上,如一个textbox或table表项中,而不是控制台。---可以用类似观察者模式的方法实现在主线程的控制台输出,但总是无法在图形界面上输出。BTW:我用的是SWT
      

  4.   


    我试过,concurrent包中的各种线程池都不支持获得池中的线程,无法获得各个线程的引用,一切都无从谈起!