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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fatesabering 中级黑马   /  2014-12-23 18:44  /  1707 人查看  /  12 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

哎 答得不是很好,分享一下面试题,我自己当时没做出来,希望大家多做准备吧

声明一个共享数组,起两个线程,两个线程分别隔一段时间(可以写一个随机数),给数组中添加数据,每一个线程为数组添加3个数据即可。

12 个回复

倒序浏览
好难的样子。
回复 使用道具 举报
你报的第几期??
回复 使用道具 举报
楼主哪一期呀~~
回复 使用道具 举报
发来贺电
回复 使用道具 举报
有点小难啊,十分钟估计也悬了,刚试了下用sleep()和yield()都能实现线程轮流添加元素,但是不知道符不符合题意呢
回复 使用道具 举报
跟老毕讲的那个  银行存钱是一个道理 。。。
回复 使用道具 举报
不管怎么说先恭喜楼主了
回复 使用道具 举报
I空空 中级黑马 2014-12-24 11:50:38
9#
压力好大,不会做
回复 使用道具 举报
多谢分享。
回复 使用道具 举报
哎 做出来了
  1. package test;

  2. import java.util.Arrays;
  3. import java.util.Random;
  4. /*
  5. * 声明一个共享数组,起两个线程,两个线程分别隔一段时间(可以写一个随机数),
  6. * 给数组中添加数据,每一个线程为数组添加3个数据即可。
  7. * */
  8. class Resource
  9. {
  10.         private int[] arr = new int[6];
  11.         private int pos = 0;
  12.         public synchronized void write(int num)
  13.         {
  14.                 this.notify();
  15.                 arr[pos] = num;
  16.                 pos++;
  17.                 System.out.println(Thread.currentThread().getName()+":"+Arrays.toString(arr));
  18.                 try{this.wait();}catch(Exception e){}
  19.         }
  20. }
  21. class Write2Array implements Runnable
  22. {
  23.         private Resource r;
  24.         Write2Array(Resource r) {
  25.                 // TODO Auto-generated constructor stub
  26.                 this.r = r;
  27.         }
  28.         public void run()
  29.         {
  30.                 for(int x=0; x<3; x++)
  31.                 {
  32.                         try {
  33.                                 Random random = new Random();
  34.                                 try{Thread.sleep(random.nextInt(100));}catch(Exception e){}
  35.                                 r.write(random.nextInt(100));
  36.                         } catch (Exception e) {
  37.                                 // TODO: handle exception
  38.                         }
  39.                        
  40.                 }
  41.         }
  42. }
  43. public class exam02 {
  44.         public static void main(String[] args) {
  45.                 Resource r = new Resource();
  46.                 new Thread(new Write2Array(r)).start();
  47.                 new Thread(new Write2Array(r)).start();
  48.         }
  49. }
复制代码

应该符合题意吧
回复 使用道具 举报
面试时是把答案口述出来吗
回复 使用道具 举报
好像有点难噢···
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马