描述:有一个按钮A,点击一次就会创建一个线程workThread,workThread线程中执行一些耗时操作会下载很多图片并显示出来,会创建十几个DownloadImgThread,一个DownloadImgThread下载一张图片问题:下面我点击按钮A五次,我想前四次的workThread立即停止,只执行第五次的workThread,这个怎么做到多线程

解决方案 »

  1.   

    主线程在点击按钮时,要拿到创建线程workThread的引用,那么在主线程中就能去中断workThread这些线程。
      

  2.   

    一般中终线程的方法就是循环检查 stop flag 值的方式,flag为false,线程立即终止;但是线程处于非运行状态的话,需要用interrupt()方法
    两种方式结合就可以了。这篇文章,讲得很不错了。
    http://forward.com.au/javaProgramming/HowToStopAThread.html
      

  3.   


    看了上面回复一般都用标志法 private volatile Thread blinker;
        public void stop() {
            blinker = null;
        }
        public void run() {
            Thread thisThread = Thread.currentThread();
            while (blinker == thisThread) {
                try {
                    thisThread.downloadImg // 下载图片
                } catch (InterruptedException e){
                }
                repaint();
            }
        }当线程已经在下载图片时,你这时调用stop方法,这个怎么才能制止线程下载图片?
      

  4.   

    总觉得你这个问题是不是应该反过来解决,当第一次按下按钮后,启动下载显示线程,之后,要么在操作完成之前disable这个按钮
    要么,在操作完成之前即使按了按钮,但如果操作在进行,则不做任何处理?