A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨志 + 1

查看全部评分

3 个回复

倒序浏览
前面你创建对象时使用了Demo d=new Demo();
所以把    f.shutdown();    改成d.shotdown();

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

谢谢咯。。。呵呵      
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马