² 生产围棋的工人不小心把相等数量的黑子和白子混装载一个箱子里,现要用自动分拣系统把黑子和白子分开,该系统由两个并发执行的进程组成,功能如下:
(1)进程A专门拣黑子,进程B专门拣白子;
(2)每个进程每次只拣一个子,当一个进程在拣子时不允许另一个进程去拣子;
public class WeiQi{
public static void main(String[] args){
int j=-1;
int k=-1;
int strji[]=new int[5];//用奇数表示白棋
int strou[]=new int[5];//用偶数表示黑棋
int str[]=new int[]{1,3,2,4,5,7,6,8,9,10} ;//所有的黑白子
boolean flag=true;
for(int i=0;i<20;i++){
if(flag){//偶数数组先取
flag=false;
System.out.println("***");
if((str[i%10]%2)==0){
if(str[i%10]!=0){
j++;
strou[j]=str[i%10];
str[i%10]=0;
System.out.println("第"+i+"次"+"strou["+j+"]"+"取得了黑棋子"+strou[j]);
continue;
}else{flag=true;
continue;
}
}
}
if(!flag) {
flag=true;
System.out.println("@@@");
if((str[i%10]%2)!=0){
if(str[i%10]!=0){
k++;
strji[k]=str[i%10];
str[i%10]=0;
System.out.println("第"+i+"次"+"strji["+k+"]"+"取得了白棋子"+strji[k]);
}else{flag=false;
continue;
}
}
}
}
System.out.println("偶数数列寻到的黑子为:");
for(int a=0;a<5;a++){
System.out.println(strou[a]);
}
System.out.println("奇数数列寻到的白子为:");
for(int a=0;a<5;a++){
System.out.println(strji[a]);
}
}
}