import java.util.ArrayList;
import java.util.List;
public class Test7 {
public static void main(String[] args){
List list = new ArrayList();
for(int i=0;i<10;i++){
list.add(i+"");
}
List sbs = new ArrayList();
for(int i=0;i<5;i++){
sbs.add(new StringBuffer());
}
Thread sumThread = new Thread(new Sum(sbs));
for(int i=0;i<5;i++){
Thread thread = new Thread(new MyHander(list,i*2,i*2+2,sbs.get(i)));
thread.start();
}
sumThread.start();
}
}
class Sum implements Runnable{
private List sbs;
public Sum(List sbs){
this.sbs =sbs;
}
public void run() {
synchronized (this) {
while(true){
if(MyHander.getCounter()<5){
try {
wait(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
break;
}
}
StringBuffer value = new StringBuffer();
for(int i=0;i<5;i++){
value.append(sbs.get(i).toString());
}
System.out.println(value.toString());
}
}
}
class MyHander implements Runnable {
private List list;
private int start;
private int end;
private StringBuffer sb;
private static Integer counter=0;
public MyHander(List list,int start,int end,StringBuffer sb){
this.list =list;
this.start = start;
this.end = end;
this.sb = sb;
}
public static Integer getCounter(){
return counter;
}
@Override
public void run() {
for(int i=start; i
sb.append(list.get(i));
}
synchronized(counter){
counter++;
}
}
}
2014年4月02日 16:50