[英]Simple Multi-Threading in Java
目前,我正在運行的無線程模型無法運行,這僅僅是因為我在處理要處理的數據之前內存不足。 我已經進行了所有可以優化代碼的更改,但仍然不夠快。
顯然,我應該繼續講線程模型。 我想知道執行以下操作的最簡單,最簡單的方法是:
我從來沒有使用過Java線程,從我讀過的內容來看,它看起來很復雜,即使我正在尋找的東西看起來很簡單。
如果您有多個具有相同優先級的獨立工作單元,則最佳的解決方案通常是某種工作隊列,其中有限數量的線程(為優化性能while(true)
選擇的數量)位於while(true)
循環中,以從排隊並執行它們。
通常,最佳線程數將是+/- 1的處理器數,但是在某些情況下,如果線程趨於因磁盤I / O請求或某些此類請求而停滯,則更大的線程數將是最佳的。
但是請記住,可能需要調整整個系統。 例如,您可能需要更多的磁盤臂,當然可能需要更多的RAM。
我將從閱讀Java並發作為復習開始;)
特別是,我將花一些時間來了解Executors API,因為它可以完成您所描述的大部分操作,而不會處理很多鎖;
將內存消耗分配給多個線程不會改變整體內存消耗。 從我從您的問題中讀出的信息,我想向前走,並告訴您:增加Java引擎的堆,這將有所幫助。 看起來您必須優化Java啟動參數,而不是代碼。 如果我錯了,那么您將不得不緩沖數據。 到磁盤! 不在同一內存模型中的線程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.