簡體   English   中英

Java線程中的唯一ID

[英]unique id in java thread

我的應用程序使用一個日志記錄組件,該組件需要跟蹤每個調用的唯一標識符。

我的出發點是一個MDB,它顯然會啟動對幾個類的一系列方法調用。 每個類都創建一個類似於log4j的新記錄器對象,並使用該對象將事件記錄到數據庫中。 並且為每個創建的記錄器對象分配一個唯一的標識符。 該標識符應跟隨該線程,直到后續調用全部返回並且MDB中的onMessage方法終止。

問題在於,在處理一個JmsMessage期間,MDB接收到另一條消息,並且我的ID混雜在一起。

我已經把頭撞在桌子上了一段時間,我想答案就在我的眼前,但是你有什么主意嗎? 我如何確保一個“進程”可以使用其自己的ID進行記錄,即使在第一個進程完成之前就啟動了另一個進程?

先感謝您。

您有不能使用Message.getJMSMessageID()的原因嗎?

如果有的話,那么它應該就是AtomicLong.incrementAndGet() 保留一個靜態實例,並在MDB的onMessage()方法中獲取一個ID,並在處理消息時保留它(可能在ThreadLocal )。

通常您要使用“友好”名稱

String name = Thread.currentThread().getName();

但是,這可能不是唯一的或沒有意義的,在這種情況下,您可以使用唯一的ID。

int id = Thread.currentThread().getId();

暫無
暫無

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

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