黑马程序员技术交流社区

标题: 关于java线程的问题,d.shutdown(); 怎么停止不了运行,要改... [打印本页]

作者: 张学东    时间: 2012-10-14 13:11
标题: 关于java线程的问题,d.shutdown(); 怎么停止不了运行,要改...
  1. public class TestThreadDemo {
  2.         public static void main(String args[]) {
  3.   Demo d = new Demo();
  4.                 Thread t = new Thread(d);
  5.                 t.start();
  6.                
  7.                 for(int i=0; i<100; i++) {
  8.                         System.out.print(i+"  ");
  9.                         if(i%10==0) {
  10.                                 System.out.println();
  11.                         }
  12.                 }
  13.                
  14.                 f.shutdown();   
  15.         }
  16. }

  17. class Demo implements Runnable {
  18. boolean flag = true;
  19.        
  20.         public void run() {
  21.                 if( flag = true) {
  22.                         for(int i =0; i<1000; i++) {
  23.                         System.out.print("My Thread is "+i+"  ");
  24.                                 if(i%5==0) {
  25.                                 System.out.println();
  26.                                 }
  27.                         }
  28.                 }
  29.         }
  30.        
  31.         public void shutdown(){
  32.                 flag = false;
  33.         }
  34. }
复制代码

作者: 梁世喜    时间: 2012-10-14 13:24
前面你创建对象时使用了Demo d=new Demo();
所以把    f.shutdown();    改成d.shotdown();


作者: 沈佳龙    时间: 2012-10-14 14:09
首先你要知道你现在的程序里面有两个线程一个是主线程一个是你创建的子线程Thread t = new Thread(d);,在你子线程的run()方法里面你有一个对if( flag = true)的判定,在主线程中你调用了一个方法
public void shutdown(){
      flag = false;
   }
用来改变flag的值,但是你现在改变的只是在主线程中的值    你觉得他会对子线程有影响吗?
作者: 张学东    时间: 2012-10-14 14:20
沈佳龙 发表于 2012-10-14 14:09
首先你要知道你现在的程序里面有两个线程一个是主线程一个是你创建的子线程Thread t = new Thread(d);,在 ...

谢谢咯。。。呵呵      




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2