多线程问题

题目要求,主线程循环100次,子线程循环10次,再主线程循环100次,子线程循环10次,循环50次

开始的设计思想就是两边互相监听,由主线程开始进行100次,然后子线程监听到进行子线程的一个流程!虽然是个实例但是占用了相当大的系统资源,是一个不可取的思想。今天也感觉到自己距离还差好远呀继续努力。而且在写的时候也犯了很致命的错误,JAVA的基础功底需要加强了

 

public class ThreadTest {
 //全局变量设计(为了实现功能的设计...影响效率的一方面)
 static int i=0;
 static int j=0;
 static int k=0;
 public static void main(String[] args) {
  //线程方法
  new Thread(new Runnable() {
   public void run() {
    //线程启动时,i=0,此时此方法启动,进行100次循环
    while(i%10==0){
     try {
      Thread.sleep(100);
     } catch (InterruptedException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
     j++;
     System.out.println("子j"+j+"父i"+i);
    }
   }
  }).start();
  
  new Thread(new Runnable() {
   public void run() {
    while(true){
     try {
      Thread.sleep(40);
     } catch (InterruptedException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
     //j!=0时放在在初始时就被开启,当j到100时启动
     while(j%100==0&&j!=0){
      i++;
      System.out.println("父i"+i+"子j"+j);
      try {
       Thread.sleep(100);
      } catch (InterruptedException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
     }
    }
    
   }
  }).start();

 }
}

 但是这样运行并没有达到我的预想,因为会打出这样的情况父i1子j100当i=1的时候也进入了第一个线程,打出子j101父i1这样我就很不理解这到底发生了什么?求高手指点开来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值