???????????
???????????????У???????ú?????????????????????????????????????????????
??????1?????????

????????????????????????????÷??????A?????a()??????B?????b()???????b()???????????a()?????????????????????÷???????????b()??????????????????b()?????????????????????????????a()????????????????????????????????????????????????????
??????2????????

???????????????????????????????????????????????????????????????÷??????A?????????a()????????????????????B?????b()??????????????????У????????????b()????????????????????????a()????С????????????????????a()?????????b()??????????????a()???????b()??н????????£????????????????Щ????????????????????????????????????????????????????????????????b()????н?????м???????Java?У????????Future+Callable?????????????????????????μ???????????Java?????21?????????????????CyclicBarrier??Callable??Future??FutureTask??
??????3?????

???????????????????????
??????A??a()??????????B??b()????
??????B??b()????????????????????A??callback()????
?????????????÷????????????????????????÷????
???????????
??????????????????????????????????????????????????????????????????????????????
???????????????????????????????tellAnswer(int answer)???????????????????????
1 /**
2  * ?????????????http://www.cnblogs.com/xrq730/p/6424471.html
3  */
4 public interface Callback {
5
6     public void tellAnswer(int answer);
7
8 }
?????????????????????Callback????
1 /**
2  * ?????????????http://www.cnblogs.com/xrq730/p/6424471.html
3  */
4 public class Teacher implements Callback {
5
6     private Student student;
7
8     public Teacher(Student student) {
9         this.student = student;
10     }
11
12     public void askQuestion() {
13         student.resolveQuestion(this);
14     }
15
16     @Override
17     public void tellAnswer(int answer) {
18         System.out.println("????????????" + answer);
19     }
20
21 }
?????????????????public??????
??????1????????tellAnswer(int answer)????????????????????????????????
??????2??????????askQuestion()???????????????
?????????????????????????????????????????????Callback????????????????????????????????棺
1 /**
2  * ?????????????http://www.cnblogs.com/xrq730/p/6424471.html
3  */
4 public interface Student {
5
6     public void resolveQuestion(Callback callback);
7
8 }
?????????????????????Ricky??
1 /**
2  * ???????Ricky?????????????????????????http://www.cnblogs.com/xrq730/p/6424471.html
3  */
4 public class Ricky implements Student {
5
6     @Override
7     public void resolveQuestion(Callback callback) {
8         // ?????????
9         try {
10             Thread.sleep(3000);
11         } catch (InterruptedException e) {
12
13         }
14
15         // ???????????????д????
16         callback.tellAnswer(3);
17     }
18
19 }
????????????????????16??????????????
????д???????????????
1 /**
2  * ??????????????http://www.cnblogs.com/xrq730/p/6424471.html
3  */
4 public class CallbackTest {
5
6     @Test
7     public void testCallback() {
8         Student student = new Ricky();
9         Teacher teacher = new Teacher(student);
10
11         teacher.askQuestion();
12
13     }
14
15 }
???????????н????У?
????????????????3
??????????????????????????
??????1???????????????????resolveQuestion???????????
??????2????????????????????????????????tellAnswer
????????????????????????????????????
???????????
?????????????????????????????????????????????
??????1??????????г???
????????????г??????????????????????????????????λ????????????????????????????ó???????????????????????????????????????????磬??????????????????κ?????
??????2??????????г???
????????????г???????????????????????????????δ??????????????????????????Ricky??Jack??Lucy????????????????????????????????Student???List<Student>???????????????????Student?б??????????????????????????
?????????????????????????????????????????????????????????Щ????????????????????????????????????????????????????????????
??????????????????????????????????this????????÷??????????÷??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????
?????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????
???????????????????κ????????????????????????????
???????????????????????????????????????????????????????????????·???????????????????????????????????????????????????·???????Щ???????????????????????????????????????????????·??????????????????????????????
??????1??????????????????????????????????????????????????????????????????????????????????н??д??????????Щ????????????????????????????????????????????????????????
??????2??????????????????????????????????·??????????????????
?????????????????????????????б???????????????????????????????????ж??????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????Ricky??????Ricky???????????????????????????????????????????????????????????????????????????????£?
?????????????One-By-One?????????????????Ricky??Mike??Lucy??Bruce??Kate??λ???????????????????????λ???????????????????????ɡ?
???????????????????????????????????????????????????????????????????
??????1?????Future+Callable????????????????н?????????????????????????????????????????????????????????????
??????2????????????????????????????????????????????????ɡ???????????????????Callback???????????????????????????????????????????????????????磬??????????????????????Callback?????????????????