黑马程序员技术交流社区

标题: 有个题,做完了,调试的时候却不对,求解答 [打印本页]

作者: 李鑫    时间: 2012-6-11 09:46
标题: 有个题,做完了,调试的时候却不对,求解答
题目是:子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,我写的很多错,就不贴出来了,请高手写个正确的!最主要的是在主线程循环到子线程循环那备注一下啊
作者: 赵兵锋    时间: 2012-6-11 13:47
  1. public class Main{
  2.         public static boolean flag;
  3.         public static void main(String[] args) {
  4.                 T t = new T(true);
  5.                 int counts=0;
  6.                 flag = false;
  7.                 t.start();
  8.                 while(counts++<50){
  9.                         while(!flag){};//flage为真时继续向下执行
  10.                         System.out.println("主线程第"+counts+"次");
  11.                         for(int i=1;i<=100;i++){
  12.                                 System.out.println("主线程:"+i);
  13.                         }
  14.                         t.set();//设置子线程的flag为真,让子线程继续向下执行
  15.                         flag = false;//让主线程在
  16.                 }
  17.         }
  18. }
  19. class T extends Thread{
  20.         Boolean flag = null;
  21.         int counts = 0;
  22.         T(boolean b){
  23.                 flag = b;
  24.         }
  25.         public void set(){
  26.                 flag = !flag;
  27.         }
  28.         @Override
  29.         public void run() {
  30.                 while(counts++<50){
  31.                         while(!flag){}//flag为真时继续向下执行,当主线程中改变此值时。
  32.                         System.out.println("子线程第"+counts+"次");
  33.                         for(int i=1;i<=10;i++){
  34.                                 System.out.println("子线程:"+i);
  35.                         }
  36.                         flag = false;//让子线程在下个while处反复执行
  37.                         Main.flag = true;//让主线程继续向下执行
  38.                 }
  39.         }
  40. }
复制代码





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