簡體   English   中英

Java線程在哪個處理器上運行?

[英]Java thread running on which processor?

有沒有辦法找到你的線程運行在哪個處理器(在單個系統或多個系統上),使用Java本機線程? 如果沒有,是否有任何圖書館可以提供幫助?

JVM的線程調度程序是特定於JVM的,因此沒有“通用”解決方案。 據我所知,沒有任何可用的開箱即用,但可能使用:

  • Sun JVM;
  • Solaris - 或Mac,正如Tom Hawtin - 強調指出的那樣;
  • DTrace

你可能會有運氣:

  • 跟蹤一個thread-start探測器,其中包含args[3] “本機/ OS線程ID。這是主機操作系統分配的ID”
  • 使用特定於Solaris的實用程序將本機/ OS線程ID映射到CPU。

我從來沒有聽說過這樣的電話,我非常懷疑有一個,因為它不是真的有必要,並且需要額外的平台特定代碼。

據我所知,標准JDK不支持它(至少高達JDK 6)。 如果這是你真正需要的,你可能需要使用JNI執行一些本機調用。 這里可以找到一個很好的例子(雖然它不是你需要的,但我相信這是一個好的開始)。

順便說一句,使用ThreadMXBean類(如每個線程的CPU使用率),您可以從JDK獲得許多其他信息,也許您可​​以在那里找到您正在尋找的內容。

操作系統將在不同的時間在不同的處理器上調度線程。 因此,即使您獲得了每個線程在任何給定時刻運行的位置的快照,它也可能在毫秒內過時。

你想解決的問題是什么? 或許可以做你想要的而不必知道這一點。

暫無
暫無

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

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