簡體   English   中英

Java中的簡單多線程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM