描述:
1 有一个不停的随机产生1-10之间的整数(设定每隔50秒停一次)
2 把生成的整数分别通过各自的线程名插入到相应的list
3 最后得到10个list list中的显示情况是list 1:1,list 2:2.......list 10:10
4 程序运行5分钟
谁能教我怎么把这个程序实现出来
1 有一个不停的随机产生1-10之间的整数(设定每隔50秒停一次)
2 把生成的整数分别通过各自的线程名插入到相应的list
3 最后得到10个list list中的显示情况是list 1:1,list 2:2.......list 10:10
4 程序运行5分钟
谁能教我怎么把这个程序实现出来
解决方案 »
- 请教,急啊
- Java web 中如何使用 google map 请指教!
- getOutputStream() has already been called for this response
- 怎么改变hibernate保存到Oracle里的日期类型?
- Strut+Spring+Hibernate应用,在一个Session中,先新增后删除,出现:Could not execute JDBC batch update错误。
- Xerces解析xml文件时出现错误,大家帮我看一看~
- Struts的错误:Cannot retrieve definition for form bean null,帮忙解决
- 请问一下什么叫中间件?
- 一个关于IP的问题
- 请问会话EJB如何调用实体EJB呢,最好能给点代码示例,谢谢!
- struts2 jsonplugin配置问题
- 怎么防止图片被用读流的方式下载
我没理解最后怎么消费那些随机数的。是不是用10个锁,对应1-10,每出来一个数字,notify一下对应的锁,激活对应的消费线程???
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);
}
}无聊空虚寂寞
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);
}写错位置了,重新来过
// 线程休眠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()这样写什么意思
然后每个线程产生一个list后用线程名做key将线程放入map中
然后同步一下应该就可以了