/*思路
* 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();
}
}
}
} |