package com.itheima.网上练习题;
public class 第21一个数组两个线程公用随机添加各三个元素 {
/**Test21--【】声明一个共享数组,起两个线程,
* 两个线程分别隔一段时间(可以写一个随机数),给数组中添加数据,
* 每一个线程为数组添加3个数据即可。
* @param args
*/
static int[] arr = new int[6];
public static void main(String[] args) {
// TODO Auto-generated method stub
final Pr p0 = new Pr();
new Thread(){
public void run(){
try {
p0.print5();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();
new Thread(){
public void run(){
try {
p0.print6();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();
}
}
class Pr{
int[] arr = new int[6];
int fig=1;
static int i=0;
public void print5() throws InterruptedException{
while(true){
synchronized (this) {
if (fig!=1) {
wait();
}else{
if (i==5) {
for(int a : arr){
System.out.print(a+" ");
}
return;
}else {
System.out.println(Thread.currentThread().getName()+"输出1");
arr[i]=(int) (Math.random()*100);
i++;
fig=2;
notify();
}
}
}
}
}
public void print6() throws InterruptedException{
while(true){
synchronized (this) {
if (fig!=2) {
wait();
}else{
if (i==5) {
for(int a : arr){
System.out.print(a+" ");
}
return;
}else{
System.out.println(Thread.currentThread().getName()+"输出2");
arr[1]= (int) (Math.random()*100);
i++;
fig=1;
notify();
}
}
}
}
}
}
|