描述:
1 有一个不停的随机产生1-10之间的整数(设定每隔50秒停一次)
2 把生成的整数分别通过各自的线程名插入到相应的list
3 最后得到10个list list中的显示情况是list 1:1,list 2:2.......list 10:10
4 程序运行5分钟
谁能教我怎么把这个程序实现出来

解决方案 »

  1.   

    既然是随机数怎么   3 最后得到10个list list中的显示情况是list 1:1,list 2:2.......list 10:10这个是啥意思?
      

  2.   

    10个list 就是自己建立的10个线程 最终随机数n要对应于listn 这是的线程的操作
      

  3.   

    你是不是1个生产线程,10个消费线程?
    我没理解最后怎么消费那些随机数的。是不是用10个锁,对应1-10,每出来一个数字,notify一下对应的锁,激活对应的消费线程???
      

  4.   


    public static void main(String[] args) throws Exception {
    final List<Integer> list1 = new ArrayList<Integer>();
    final List<Integer> list2 = new ArrayList<Integer>();
    final List<Integer> list3 = new ArrayList<Integer>();
    final List<Integer> list4 = new ArrayList<Integer>();
    final List<Integer> list5 = new ArrayList<Integer>();
    final List<Integer> list6 = new ArrayList<Integer>();
    final List<Integer> list7 = new ArrayList<Integer>();
    final List<Integer> list8 = new ArrayList<Integer>();
    final List<Integer> list9 = new ArrayList<Integer>();
    final List<Integer> list10 = new ArrayList<Integer>();
    for (int i = 1; i <= 10; i++) {
    new Thread("" + i) {
    long start = System.currentTimeMillis(); public void run() {
    while (System.currentTimeMillis() - start < (1000 * 60 * 5)) {
    int i = (int) (10 * Math.random()) + 1;
    switch (i) {
    case 1:
    synchronized (list1) {
    list1.add(i);
    } break;
    case 2:
    synchronized (list2) {
    list2.add(i);
    } break;
    case 3:
    synchronized (list3) {
    list3.add(i);
    } break;
    case 4:
    synchronized (list4) {
    list4.add(i);
    } break;
    case 5:
    synchronized (list5) {
    list5.add(i);
    } break;
    case 6:
    synchronized (list6) {
    list6.add(i);
    } break;
    case 7:
    synchronized (list7) {
    list7.add(i);
    } break;
    case 8:
    synchronized (list8) {
    list8.add(i);
    } break;
    case 9:
    synchronized (list9) {
    list9.add(i);
    } break;
    case 10:
    synchronized (list10) {
    list10.add(i);
    }
    break; } try {
    // 线程休眠50秒
    Thread.sleep(50 * 60 * 1000);
    } catch (Exception e) {
    }
    }
    };
    }.start(); Thread.sleep(55 * 60 * 1000);
    // 5.5分钟后打印结果。
    System.out.println(list1);
    System.out.println(list2);
    System.out.println(list3);
    System.out.println(list4);
    System.out.println(list5);
    System.out.println(list6);
    System.out.println(list7);
    System.out.println(list8);
    System.out.println(list9);
    System.out.println(list10);
    }
    }无聊空虚寂寞
      

  5.   


    public static void main(String[] args) throws Exception {
    final List<Integer> list1 = new ArrayList<Integer>();
    final List<Integer> list2 = new ArrayList<Integer>();
    final List<Integer> list3 = new ArrayList<Integer>();
    final List<Integer> list4 = new ArrayList<Integer>();
    final List<Integer> list5 = new ArrayList<Integer>();
    final List<Integer> list6 = new ArrayList<Integer>();
    final List<Integer> list7 = new ArrayList<Integer>();
    final List<Integer> list8 = new ArrayList<Integer>();
    final List<Integer> list9 = new ArrayList<Integer>();
    final List<Integer> list10 = new ArrayList<Integer>();
    for (int i = 1; i <= 10; i++) {
    new Thread("" + i) {
    long start = System.currentTimeMillis(); public void run() {
    while (System.currentTimeMillis() - start < (1000 * 60 * 5)) {
    int i = (int) (10 * Math.random()) + 1;
    switch (i) {
    case 1:
    synchronized (list1) {
    list1.add(i);
    } break;
    case 2:
    synchronized (list2) {
    list2.add(i);
    } break;
    case 3:
    synchronized (list3) {
    list3.add(i);
    } break;
    case 4:
    synchronized (list4) {
    list4.add(i);
    } break;
    case 5:
    synchronized (list5) {
    list5.add(i);
    } break;
    case 6:
    synchronized (list6) {
    list6.add(i);
    } break;
    case 7:
    synchronized (list7) {
    list7.add(i);
    } break;
    case 8:
    synchronized (list8) {
    list8.add(i);
    } break;
    case 9:
    synchronized (list9) {
    list9.add(i);
    } break;
    case 10:
    synchronized (list10) {
    list10.add(i);
    }
    break; } try {
    // 线程休眠50秒
    Thread.sleep(50 * 60 * 1000);
    } catch (Exception e) {
    }
    }
    };
    }.start();
    }

    Thread.sleep(55 * 60 * 1000);
    // 5.5分钟后打印结果。
    System.out.println(list1);
    System.out.println(list2);
    System.out.println(list3);
    System.out.println(list4);
    System.out.println(list5);
    System.out.println(list6);
    System.out.println(list7);
    System.out.println(list8);
    System.out.println(list9);
    System.out.println(list10);
    }写错位置了,重新来过
      

  6.   

    回复7楼 没有那么复杂 不涉及到锁的问题 只是需要随机数产生后与生成的是个线程对应 1对应第一个线程 以此类推 然后存储进去 并最后统计出来 刚刚想了 不知道10个线程中的list怎么生成
      

  7.   

    回复9楼 就是代码最后的                        try {
                                // 线程休眠50秒
                                Thread.sleep(50 * 60 * 1000);
                            } catch (Exception e) {
                            }
                        }
                    };
                }.start();
            }
            
            Thread.sleep(55 * 60 * 1000);
            // 5.5分钟后打印结果。
            System.out.println(list1);
            System.out.println(list2);
    这个.start()这样写什么意思
      

  8.   

    回复9楼 还有list的产生也是以线程的形式存在
      

  9.   

    偷懒的写法  new Thread(){public void run(){}}.start();华为那帮鸟人就爱折腾人。A线程产生一个list然后B线程拿去用???
      

  10.   

    我开始也准备用switch语句进行匹配的 最后改用截取字符匹配
      

  11.   

    外面弄个map用来放所有的list
    然后每个线程产生一个list后用线程名做key将线程放入map中
    然后同步一下应该就可以了