我使用Mina框架來接收多線程的數據,當我想取得創建時間(從sessionCreated()方法獲得)、session的上下文信息(從messageReceived()方法獲得)以及斷開時間(從sessionClosed()方法獲得)的時候,我使用log4j的MDC來輸出到數據庫。可是問題來了,因為要取得斷開時間,必須得第一個線程斷開後觸發sessionClosed()方法取得斷開時間後才能將第一個線程的所有信息才會存入到數據庫;但是當第一個線程沒斷開,第二個線程就進來了發送數據,而且馬上觸發sessionClosed()線程,那麼它就覆蓋了第一個線程的信息了。使得本來屬於第一個線程的信息取不到了。其中我使用ConcurrentHashMap來存儲進入數據庫前的信息 。不知道有什麼更好的方法可以解決呢?
數據庫可以共享同一個連接,然後你寫入數據庫,由數據庫自己來做數據並發處理