this.wait(1000); //释放锁 这个语句当前线程为什么没有进入等待状态
声明一个共享数组,起两个线程,
两个线程分别隔一段时间(可以写一个随机数),给数组中添加数据,
每一个线程为数组添加3个数据即可。
* @param args
*/
public static void main(String[] args) {
int[] arr = new int[6]; //定义共享数组
ArrayAdd aa = new ArrayAdd(arr);
new Thread(aa).start(); //开启新线程
new Thread(aa).start();
}
}
class ArrayAdd implements Runnable {
private int[] arr;
private int count = 0;
public ArrayAdd(int[] arr) {
this.arr = arr;
}
public void run() {
while(true) {
if(count < arr.length) {
Random r = new Random();
synchronized (this) {
arr[count] = r.nextInt(10) + 1; //往数组中添加元素
System.out.println(Thread.currentThread().getName()+"添加了"+arr[count]);
count++;
try {
this.wait(1000); //释放锁
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}else {
break;
}
}
}
} |
|