2010-03-29 28 views
1

我正在使用ESRI組件(基於COM,用JIntegra包裝)的JVM項目。客戶端請求我們生成的JAR文件在JVM上工作並且可以訪問Java代碼。我想使用Scala,但我擔心圖書館與Scala的演員會有多好。特別是我擔心COM和Java用於將對象從一個線程傳遞到另一個線程的不同機制。Scala與Java interop到底層COM庫的Actor

有沒有人有這方面的經驗?他們會打得好嗎?

編輯:澄清

我注意到,在ESRI DB執行I/O時CPU使用率大約是15%。我想閱讀每行,並將該行傳遞給另一個演員進行解析。然後,我可以同時從DB讀取多個線程。問題是使用ESRI庫檢索的每一行實際上都是一個Java包裝的COM對象。

回答

1

演員可能並不適合你。理想情況下,參與者之間的消息將是不可變的,只有演員的內部狀態纔會被修改。這聽起來像你想爲演員提供一排,然後讓演員就地修改該行。

如果是這樣,您仍然會有與使用線程+鎖相同的併發風險,這可能是針對此特定問題的更好解決方案。另一方面,如果行是不可變的,並且行爲者返回從行派生的東西(而不改變它們),那麼它應該「正常工作」,並且我不會特別關心不同的行爲Java和COM看到線程的方式。

+0

如果你說不要擔心不同的線程機制問題,那麼我會屈服於你的經驗。行是可變的,但我不會改變它們。以及爲什麼演員vrs。標準的消費者製造商,讓我們說,這裏有很多人在工作,他們不懂基本的線程問題,但可以消除消息傳遞。 – wheaties 2010-04-22 15:21:13