簡體   English   中英

多線程

[英]Multi Threading

如何確定哪個線程正在等待更多時間?

我的要求是,在同步方法中,當一個線程完成其工作時,我希望允許等待時間最長的線程。 我希望我的問題有道理。

一切都取決於您使用的語言和/或環境。 據我所知,Java沒有對此的內在支持,如果有多個線程正在等待輸入同步方法,那么系統將在可能的情況下選擇一個任意線程來運行。

如果改為使用Java的wait()/ notify(),那么您可以控制要通知哪些線程,從而可以構建自己的優先級機制,例如,您可以有一個簡單的隊列,每個線程在其wait()之前添加自己,然后您就可以了從隊列中取出最重要的項目並通知該線程。

@djna Java不允許您選擇通知哪個線程。 如果隊列中有10個線程,則可以通知其中任何一個。

這可以通過在並發包中使用鎖/條件接口來完成。 在這里,您可以將這些線程中的每一個與一個條件相關聯,然后從該隊列中取出一個項目,並用該線程/任務映射所映射的條件。

您不應該並且幾乎肯定不需要這樣做。

線程環境將為您安排線程。

如果軟件設計看起來像是一個問題,那么該設計對於搶先式線程環境是不正確的。

您可能想做的更多是管理和確定工作單​​元的優先級,例如按到達順序對工作進行服務。

換句話說,工作處理的順序不應在您的設計中取決於運行哪個線程 ,而應取決於您如何將工作分配給線程的設計。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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