使用Future模式完成耗時(shí)的背景作業(yè)[JDK1.5 Concurrency]
個(gè)人理解
Future
模式就是在主線程中當(dāng)需要進(jìn)行比較耗時(shí)的作業(yè),但不想阻塞主線程的作業(yè)時(shí),將耗時(shí)作業(yè)交由
Future
對(duì)象在后臺(tái)中完成,當(dāng)主線程將來(這個(gè)
Future
的意義也就體現(xiàn)在這里了)需要時(shí)即可通過
Future
對(duì)象獲得已經(jīng)作業(yè)對(duì)象。
這里寫了一個(gè)簡(jiǎn)單的例子來說明這種模式,其實(shí)寫這個(gè)例子主要是自己想熟悉一下 JDK5 的 concurrency 包中 FutureTask 的用法了。例子模擬的是一個(gè)會(huì)計(jì)算賬的過程,主線程中已經(jīng)獲得其他帳戶的總額了,為了不讓主線程等待 PrivateAccount 返回而啟用新的線程去處理,并使用 FutureTask 對(duì)象來監(jiān)控,最后需要計(jì)算總額的時(shí)候再嘗試去獲得 PrivateAccount 的信息。
代碼如下:

?2

?3

?4

?5

?6

?7

?8


?9

10

11



12

13



14

15

16

17

18

19

20

21

22

23


24

25

26

27

28


29

30



31



32

33



34

35

36

37

38

39



40

41



42

43



44

45

46

47

48

49

50

51

52



53

54

55

56

57



58

59

60

61

62

63

64

65

主線程獲得了返回后即完成了總額的計(jì)算。
posted on 2007-11-01 13:11 benchensz 閱讀(4415) 評(píng)論(8) 編輯 收藏 所屬分類: 隨便寫寫(比較有用,值得看看)