public static void main(String args[]){
final SynchronousQueue<String> queue = new SynchronousQueue<String>();
for (int i=0; i<10; i++){
new Thread(new Runnable() {
@Override
public void run() {
try {
synchronized (Test2.class) {
String input = queue.take();
String output = TestDo.doSome(input);
System.out.println(Thread.currentThread().getName() + ":" + output);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
System.out.println("begin:");
for (int i=0; i<10; i++){
String input = i + "";
try {
queue.put(input);
System.out.println(i + ":放置结束");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
class TestDo{
public static String doSome(String input){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String output = input + ":" + System.currentTimeMillis()/1000;
return output;
}
}
结果是:
begin:
0:放置结束
Thread-0:0:1358643883
1:放置结束
Thread-9:1:1358643884
2:放置结束
Thread-8:2:1358643885
3:放置结束
Thread-7:3:1358643886
4:放置结束
Thread-6:4:1358643887
5:放置结束
Thread-5:5:1358643888
6:放置结束
Thread-4:6:1358643889
7:放置结束
Thread-3:7:1358643890
8:放置结束
Thread-2:8:1358643891
9:放置结束
Thread-1:9:1358643892