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