2013-03-25 46 views

回答

4

這是一個阻塞操作。

Future包裝紙不會使文件異步操作,但它Future執行服務/線程池阻礙線程...

附錄

所有JVM中的執行發生在線程上。當使用Future時,封裝計算髮生的線程與啓動Future的線程不同。當您使用舊的java.io時,操作被阻止,無論您是直接呼叫它們還是將它們交給Future

如果意圖創建高併發系統,則根本不會執行阻塞操作。使用Future和actors可以實現高併發性,而不會產生線程每個I/O操作的高開銷,但前提是隻有I/O操作本身是非阻塞的

+0

Randall是對的。我們有一個課程將這個事實抽象出來,所以我忘記了這一點。我刪除了我的答案,因爲它不正確。在未來簡單包裝不會使其異步,你需要特殊的邏輯。 – coltfred 2013-03-25 16:29:03

+0

感謝您的快速回答,我不清楚它是什麼意思,「但它會綁定來自Future執行者服務/線程池的線程......」你能解釋一下嗎? – user776635 2013-03-25 16:41:52

+0

也,這是行不通的,在scala中做異步文件io操作的正確方法是什麼? – user776635 2013-03-25 16:45:45