首先,這可能是一個愚蠢的問題,但我希望有人會告訴我,以及爲什麼。我也很抱歉,如果我的解釋是什麼/爲什麼缺乏。使用帶Servlet的BlockingQueue來保存對象
我正在使用一個servlet來上傳一個巨大的(247MB)文件,這是描繪的管道(|)。我抓取20個字段中的5個,創建一個對象,然後將其添加到列表中。一旦完成,我將該列表傳遞給名爲persistList()的OpenJPA事務方法。
這將是可以的,除了文件的大小。這是永恆的,所以我正在尋找一種方法來改善它。我的想法是在新線程中將BlockingQueue與persist/persistList方法結合使用。不幸的是,我在java併發方面的技能有點弱。
我想做的事情有意義嗎?如果是這樣,有沒有人做過類似的事情?
BlockingQueue的用途是什麼?是調用persistList()線程安全? – 2011-06-02 16:16:20
就像我說的,我仍在研究這個想法。然而,一個想法是,一旦BlockingQueue達到說1000個元素,我調用drainTo()形成一個列表,然後啓動一個線程調用persistList()來堅持列表中的所有內容。 persistList()從工廠創建一個EntityManager,然後通過循環提交併調用flush()每n個元素。我不確定它是否線程安全。 – Jason 2011-06-02 16:23:52