在 JMeter 中,我有一個執行緒組,它有一個子 JSR223 采樣器。這個 JSR223 采樣器嘗試執行一些代碼來從遠程系統獲取訊息,如果成功,它會設定一個變數 var1,如下所示:
vars.put('var1', var1)
然后,在此 JSR223 采樣器的子 JSR223 后處理器中,我執行以下操作:
var1 = vars.get('var1')
然后我使用 var1 進行一些計算來修改父 JSR223 采樣器結果。
我擔心,如果我使用此代碼生成多個并發執行緒,它們每個都會嘗試將一個值放入 var1,然后當 PostProcessor 運行時,我將無法保證我嘗試使用的 var1 值postprocessor,其實就是當前執行緒父采樣器設定的var1值。可能是另一個執行緒設定的值嗎?
這是一個有效的問題,如果是,我該如何減輕它?
提前致謝!
uj5u.com熱心網友回復:
JMeter 變數是執行緒本地的,每個執行緒(虛擬用戶)都有自己的JMeterVariables類實體,其他執行緒都沒有對該vars物件的讀寫訪問權限。
所以你的音樂會是無效的,因此它不需要“緩解”(無論它意味著什么)
如果您需要在執行緒/執行緒組之間傳遞資料 - 它可以通過props物件完成,這個家伙是“全域的”并且可以被任何執行緒組中的任何執行緒訪問(實際上在整個JVM 中,因此props即使測驗已結束,但 JMeter 引擎尚未關閉),因此您需要小心使用它。
更多資訊:您應該與 Groovy 一起使用的前 8 個 JMeter Java 類
uj5u.com熱心網友回復:
JMeter 變數值不能由另一個執行緒設定
JMeter 變數是每個執行緒的本地變數
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/399899.html
上一篇:執行緒池執行在C中的任意點停止
下一篇:如何從run()方法訪問變數?
