33,006
社区成员
发帖
与我相关
我的任务
分享
//临界资源
Type[] array=new Type[1000];
//阻塞队列
BlockingQueue<Type> queue=new ArrayBlockingQueue<Type>(100);
//A线程:
class A extends Thread(){
public void run(){
int idx=0;
while(true){
if(!array[idx].flag){
process(array[idx].value); //A线程设置数据
queue.put(array[idx]); //将数据传递给阻塞队列,等待B线程的处理
array[idx].flag=true;
}
i=((++i)==array.size())? 0 : i;
}
}
}
//B线程:
class B extends Thread(){
public void run(){
while(true){
Type temp=queue.take(array[idx]); //取出阻塞队列中需要B线程处理的对象
process(temp); //B线程处理数据
temp.flag=false;
}
}
}