因此從這個問題提示Multithreaded access to fileJava:在訪問非同步類的多個線程之間創建一箇中間人類?
我的場景是我有一個電子表格組件,其中多個線程將訪問和寫入每個工作簿。組件本身不是線程安全的,所以我正確地認爲當一個線程正在寫入時,其他線程需要被阻塞,直到第一個線程完成寫入爲止。當我處理非線程安全類時,我將如何實現這一目標?把寫入方法放在同步塊中?
這引發的另一個問題是,如果一個線程忙於將長行數據寫入其相應的工作簿,那麼另一個線程將不得不停止在它的軌道上,直到第一個線程完成爲止,這是不可取的。我想象一個場景,其中每個線程運行時不會互相阻塞,但寫入電子表格的數據由另一箇中間人類完成,這個中間人類將緩衝並將數據刷新到電子表格組件上,而不會導致多個線程「等待」直到他們的寫作過程完成。
基本上每個線程做它自己的兩件事情。 1)對來自各個源的數據執行一些長時間運行的處理,2)將處理後的數據寫入電子表格。我正在尋求一種併發解決方案,其中1)由於2)而沒有面臨「等待」。