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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. public class Test21 implements Runnable{
  2.         private int[] arr = new int[100];
  3.         private int count = 0;
  4.         public void run(){
  5.                 while(true){
  6.                         synchronized (this) {
  7.                                 Thread.yield();
  8.                                 for(int i=0;i<3;i++){//第二次循环进来,count应该是0啊?
  9.                                         int num = (int)(Math.random()*5)+1;
  10.                                         System.out.println(Thread.currentThread().getName()+"为数组第"+count+"个索引写入了"+num);
  11.                                          count++;//第一次count从0自增为1
  12.                                         if(count<arr.length){
  13.                                         arr[count-1] = num;//为了索引从1-1变成0
  14.                                         }else{
  15.                                                 return;
  16.                                         }
  17.                                 }
  18.                         }
  19.                 }
  20.         }
  21.      public static void main(String[] args) {
  22.                 Test21 mt = new Test21();
  23.                
  24.                 Thread t1 = new Thread(mt);
  25.                 t1.setName("线程1");
  26.                 Thread t2 = new Thread(mt);
  27.                 t2.setName("线程2");
  28.                
  29.                 t1.start();
  30.                 t2.start();
  31.         }
  32. }
复制代码

5 个回复

倒序浏览
如图所示。一个变量判断循环条件还有数组索引。先自增再-1,但并不影响程序,难道变量自增自减与其它操作语句无关。程序正常,只是自己一下子懵了,理解不了。
回复 使用道具 举报
我也就来看看,虽然也不懂,帮你顶上去让大神看
回复 使用道具 举报
赵存金 来自手机 中级黑马 2015-11-27 12:09:05
板凳
第一次arr[count -1] = num  ;  count -1 并没有改变count的值。还是1。第二再调用run方法 count的值就是1。然后加1。变为2。
回复 使用道具 举报
赵存金 来自手机 中级黑马 2015-11-27 12:10:52
报纸
你把 count-1  和count--弄混了吧。。
回复 使用道具 举报
count=0;
count++; 等同于count=count+1;
count=1
int x=count-1;
x才是0 ;   
count 依然还是1  ;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马