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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 在学野马 中级黑马   /  2014-10-1 21:45  /  1153 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 在学野马 于 2014-10-2 09:13 编辑
  1. public class xian implements Runnable{
  2. private static int[] arr = new int[6];
  3. private static int index = 0 ;
  4. public static void main(String[] args) throws Exception{
  5.   new Thread(new xian()).start();
  6.   new Thread(new xian()).start();  
  7.   Thread.sleep(2000);
  8.   for(int i : arr){
  9.    System.out.print(i+"\t"+"aaaaa");
  10.   }
  11. }

  12. public void run() {
  13.   try {  
  14.    Thread.sleep(1000);
  15.   } catch (InterruptedException e) {
  16.    e.printStackTrace();
  17.   }
  18.   for(int i=0;i<3;i++){                                     //我已经定义了输出三个数 为什么不管用
  19.    int number = (int)(Math.random()*10+1);
  20.    synchronized (xian.class) {
  21.     arr[index] = number;
  22.     System.out.println(arr[index]+"bbbbbbbb");
  23.     index++;
  24.    }
  25.   }  
  26. }
  27. }
复制代码


评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1

查看全部评分

4 个回复

倒序浏览
两个线程分别输出了3个数啊{:3_46:}
回复 使用道具 举报
wtjohn 发表于 2014-10-1 22:49
两个线程分别输出了3个数啊

你发个截图
回复 使用道具 举报
{:3_58:} 基础我也没看完呢...有点迷糊...不过你这个.应该是两个线程,不管有没有获得锁,都已经是在for循环里了..所以就生成了6个随机数,对吧? 是不是这个情况
回复 使用道具 举报
  1. public class xian implements Runnable{
  2. private static int[] arr = new int[6];
  3. private static int index = 0 ;
  4. public static void main(String[] args) throws Exception{
  5.   new Thread(new xian()).start();
  6.   new Thread(new xian()).start();  
  7.   Thread.sleep(2000);
  8.   for(int i : arr){
  9.    System.out.print(i+">>>a     ");
  10.   }
  11. }

  12. public void run() {
  13.   try {  
  14.    Thread.sleep(1000);
  15.   } catch (InterruptedException e) {
  16.    e.printStackTrace();
  17.   }
  18.   for(int i=0;i<3;i++){                                     //我已经定义了输出三个数 为什么不管用
  19.           synchronized (xian.class) {
  20.                   if(arr[i]==0)
  21.                   {
  22.                           int number = (int)(Math.random()*10+1);
  23.                           arr[index] = number;
  24.                           System.out.println(arr[index]+":::::::::::b");
  25.                           index++;
  26.                   }
  27.                   
  28.    }
  29.   }  
  30. }
  31. }
复制代码

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