黑马程序员技术交流社区
标题:
完全被题目弄糊涂了,谁给个清晰的思路
[打印本页]
作者:
wasabi
时间:
2016-9-23 21:48
标题:
完全被题目弄糊涂了,谁给个清晰的思路
声明一个共享数组,起两个线程,两个线程分别隔一段时间(可以写一个随机数),给数组中添加数据,每一个线程为数组添加3个数据即可。
作者:
暮雨微凉
时间:
2016-9-23 21:56
点招 都这么难么,亚历山大有木有。。。
作者:
wasabi
时间:
2016-9-23 21:58
暮雨微凉 发表于 2016-9-23 21:56
点招 都这么难么,亚历山大有木有。。。
点招比这个简单点吧
作者:
zhaokun
时间:
2016-9-23 23:33
貌似店招就是这种吧
作者:
wo1026756529
时间:
2016-9-23 23:53
这么难?只是习题吧?
作者:
yu244934256
时间:
2016-9-24 00:17
1.重写run方法
2.定义共享资源
3.通过线程的名称判断执行的几次
4.满足条件就跳出
作者:
huangweicong
时间:
2016-9-24 00:23
最近我也凌乱了
作者:
gcno93
时间:
2016-9-24 01:15
/*思路
* 1.先创建一个线程类
* 2.在线程类中,申明一个共享数组
* 例如;private static int[] arr =new int[6]
* 3.因为我们需要记录数组下边,所以们还需在线程类中声明一个共享的数组下标变量
* ,用于记录数组当前的下标 例:private static int i = 0 ;
* 4.在线程类中声明随机数对象用于为数组产生值
* 5.在线程类中声明一个添加的次数的变量,进行计算3次后结束添加
* 6.在线程类中的run的方法里面写一个while循环,用来为共享数组赋值
* 具体看以下代码吧
*/
//以下代码只是参考,这个题我也不知我是否理解对了,大家学习,学习
import java.util.Random;
public class Test2 {
public static void main(String[] args) {
/*
* 声明一个共享数组,起两个线程,
* 两个线程分别隔一段时间(可以写一个随机数),
* 给数组中添加数据,每一个线程为数组添加3个数据即可。
*/
//起两个线程
new Thread(new xinCheng(),"线程1").start();
new Thread(new xinCheng(),"线程2").start();
}
}
class xinCheng implements Runnable{
private static int[] arr =new int[6]; //声明一个共享数组
private static int i = 0 ; //数组的下标游标
private Random r = new Random(); //随机数对象
//下面为什么不用共享,因为我们需要的是各自添加3次
private int addTimes = 0; //达到3后让线程停止
@Override
public void run() {
while(true){
synchronized ("adasd") {
//给数组中添加数据
//System.out.println(i);
arr[i++] = r.nextInt(100); //产生随机数为数组添加元素
addTimes++; //添加次数加1
//下面只是输出而然
System.out.println(Thread.currentThread().getName()+":"+arr[i-1]);
if(addTimes == 3){//判断是否已经添加3次了
break;
}
try {
//两个线程分别隔一段时间
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2