問題一個java.util.arrayqueue,處理的程序可以從一個靜態java.util.arrayqueue順序讀取多個線程?如果一個進程程序的三個線程運行和三個數據對象到達入arrayqueue,每個線程處理一個數據對象或只有一個線程將處理所有三個數據對象讀取多個線程
Q
讀取多個線程
0
A
回答
1
您正在描述生產者 - 消費者模式。
的幾點
如果您產卵三個線程,它們每一個循環,閱讀過相同的隊列,然後將他們全部嘗試使用隊列中的項目。沒有保證每個線程將消耗多少項目。這完全取決於JVM中的線程調度程序(或OS級別)。一般來說,如果大量相似的項目被添加到隊列中,每個線程將消耗大致相同數量的項目。
ArrayQueue不是因爲它不是線程安全的這個用例一個不錯的選擇。更好的選擇是的ConcurrentLinkedQueue或ConcurrentBlockingQueue
直接回答你的問題,是的,你可以有多個線程從同一隊列中讀取,但請考慮以上。
0
通常情況下,你要使用同步的線程到每個線程讀取1個輸入。
要回答你的問題,無法確定在這種情況下的行爲。你應該強制你的線程同步,以確保每個線程在任何時候都很忙,而不僅僅是一個。
0
你真的很想在這種情況下使用同步或切換到更合適的數據結構。
從arrayqueue的文檔: 他們不是線程安全的;在不存在外部同步的,它們不支持由多個線程
0
假設arrayqueue壓入/彈出是線程安全和併發訪問所使用不限制運行的線程的數目的任何信令:
Depends中可用的內核數量以及線程處理數據的速度。如果有三個空閒內核並且排隊的任務需要一些時間,那麼這三個線程可以同時運行這三個任務。如果任務非常簡短,並且系統上有一些負載,使得在數據提交時只有一個線程是空閒的,則一個線程可能會比賽並在另一個線程變爲可用之前執行所有三個項目。如果內核比任務少,那麼顯然只有[不。內核]任務可以同時運行。
混合並匹配那些可能性。
相關問題
- 1. 多個線程讀取一個變量
- 2. 從多個線程讀取全局值
- 3. 從多個線程讀取SQL數據
- 4. 多線程讀取文件
- 5. 多線程MSMQ讀取
- 6. 使用PHP Pthread同時讀取多個CSV文件(多線程)
- 7. 使用多線程讀取30GB文件
- 8. 多線程讀取原始類型
- 9. 通過多線程讀取文件
- 10. 讀取使用多線程Java中
- 11. 只使用多線程讀取一行
- 12. 隔離讀取和寫入多線程
- 13. Java多線程寫入和讀取
- 14. 多線程:讀取/寫入管道
- 15. 從單個線程內的多個BlockingQueues中讀取
- 16. 從python中的多個線程讀取單個文件
- 17. Python多線程/多進程讀取串行端口
- 18. 從同一文件讀取多個線程
- 19. 用多線程讀取單個文件:應該加快速度?
- 20. 在多線程中讀取一個變量
- 21. 多從在bash一個txt文件讀取(線程)
- 22. 從多個線程讀取全局數據安全嗎?
- 23. 使用線程提高磁盤讀取性能(多個文件)
- 24. 紅寶石多個線程從相同的散列讀取
- 25. perl6線程讀取干擾
- 26. 紅寶石多線程/多讀數
- 27. 從修補程序段中讀取多線程
- 28. 讀取多個值
- 29. Python - 多線程幫助 - 讀取多個文件 - ETL到SQL服務器
- 30. 春季批量單線程讀取器和多線程寫入器