final Collection coll = Collection.getInstance();
coll.setMap(map);
coll.setProgressBar(progressBar);
coll.start(); new Runnable() { // 这条线程 检查 coll 是否工作完成
public void run() {
boolean flag = true;
while (flag) {
try {
System.out.println("d"); //这里为什么没有输出
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
flag = coll.isFlag();
}
if (!flag) {
System.out.println("ok");  // 这里也没有输出
Stop();
}
}
};就像是这条线程没有被执行一样,怎么回事丫

解决方案 »

  1.   

    你光定义了一个匿名类,可是我没看到你启动这个线程啊???你应该    new Thread(new Runnable() { // 这条线程 检查 coll 是否工作完成
          public void run() {
            boolean flag = true;
            while (flag) {
              try {
                System.out.println("d"); // 这里为什么没有输出
                Thread.sleep(500);
              } catch (InterruptedException e) {
                e.printStackTrace();
              }        }
            if (!flag) {
              System.out.println("ok"); // 这里也没有输出        }
          }
        }).start();
      

  2.   

    1楼的大哥正解……或者将
    new Thread(new Runnable() {...... }).start();
    这段代码单独封装在一个类中,如ThreadTest中,让其实现Runnable接口,实现run()函数:class ThreadTest implements Runnable {
        public void run() {
            boolean flag = true;
            while (flag) {
              try {
                System.out.println("d");
                Thread.sleep(500);
              } catch (InterruptedException e) {
                e.printStackTrace();
              }        }
            if (!flag) {
              System.out.println("ok");        }
          }
    }
    然后在测试类中用
    ThreadTest tt = new ThreadTest();
    new Thread(tt).start();
    启动该线程