Posted on 2017-03-22 15:29
tangtb 閱讀(531)
評論(0) 編輯 收藏 所屬分類:
WebSphere MQ
Java™ 運行時環境是繼承性多線程的。WebSphere® MQ classes for Java 允許在多個線程之間共享隊列管理器對象,但確保對目標隊列管理器的所有訪問都是同步的。
Java 中很難避免多線程程序。請考慮一個連接到隊列管理器的簡單程序,并在啟動時打開隊列。該程序在屏幕上顯示單個按鈕。當用戶單擊該按鈕時,程序從隊列中取出一條消息。
Java 運行時環境是繼承性多線程的。因此,應用程序的初始化將在一個線程中進行,作為響應按鈕按下而執行的代碼在另一個線程中進行(用戶接口線程)。
使用基于 C 的 WebSphere MQ 客戶機時,因為在多個線程之間共享句柄存在局限性,所以會導致問題。WebSphere MQ classes for Java 放松了此約束,允許隊列管理器對象及其關聯的隊列、主題和進程對象能夠在多線程之間共享。
對于給定的連接(MQQueueManager 對象實例)而言,WebSphere MQ classes for Java 的實現確保了所有對目標 WebSphere MQ 隊列管理器的訪問都是同步的。阻止了要發出對隊列管理器的調用的線程,直到該連接進程中的所有其他調用都完成。如果要從程序內的多個線程同時訪問同一個隊列管理器,應為需要同時訪問的每個線程都創建一個新的 MQQueueManager 對象。(這等同于為每個線程發出一個單獨的 MQCONN 調用。)
原文地址:https://www.ibm.com/support/knowledgecenter/zh/SSFKSJ_7.0.1/com.ibm.mq.csqzaw.doc/ja11160_.htm