隨筆-50  評(píng)論-55  文章-8  trackbacks-0
          解決并發(fā)大數(shù)據(jù)量阻塞之道的重要思想是:
          利用多線程將數(shù)據(jù)接收和數(shù)據(jù)處理兩塊業(yè)務(wù)分開。
          1、數(shù)據(jù)接收
          public class MessageReceiver{
          //建立數(shù)據(jù)緩存區(qū)
          private List messageList = new ArrayList();

          //添加消息至數(shù)據(jù)緩沖區(qū)
          public? void addMessage(ESBInput inputMessage) {
          ??synchronized(messageList) {
          ??? messageList.add(inputMessage);
          ??? messageList.notifyAll();
          ??}
          ?}
          //并發(fā)數(shù)據(jù)接收入口,調(diào)用添加數(shù)據(jù)方法,而不是直接操作inputMessage,對(duì)其解析或者別的操作,不然極可能造成阻塞
          public void handleMessage(Input inputMessage) {
          ?????addMessage(inputMessage);
          ?}
          //從數(shù)據(jù)緩沖區(qū)取數(shù)據(jù),它應(yīng)該被另外一個(gè)線程調(diào)用
          public List getMessageList() {
          ??List _processList = new ArrayList();
          ??try {
          ??? synchronized (messageList) {
          ????? while (messageList.size() == 0) {
          ???? messageList.wait();
          ????? }
          ????? _processList.addAll(messageList);
          //清空緩存區(qū)
          ????? messageList.clear();
          ??? }
          ??}
          ??catch (Exception ex) {
          ???ex.printStackTrace();
          ??}
          ??return _processList;
          ?}
          }
          2、數(shù)據(jù)處理
          //線程
          public class MessageProcessThread extends Thread {
          MessageReceiver receiver;
          public MessageProcessThread (MessageReceiver receiver){
          this.receiver=receiver;
          }
          public void run() {
          ?? while (true) {
          ?? List list = receiver.getMessageList();
          ?? while (iter.hasNext()) {
          ??? //do what you want....
          ? handleMessage((Input)list .next());
          ????? try {
          ???sleep (100);
          ?? }
          ?? catch (Exception ex) {
          ??? ?}
          ?? }
          ?}
          }
          public handleMessage(Input messsage){
          ?? //處理消息
          }
          posted on 2009-01-06 10:28 蔣家狂潮 閱讀(965) 評(píng)論(0)  編輯  收藏 所屬分類: Basic
          主站蜘蛛池模板: 潜山县| 奉化市| 镇江市| 东光县| 元江| 怀仁县| 临邑县| 绥滨县| 巴彦淖尔市| 政和县| 福安市| 黎城县| 台东市| 辉县市| 文水县| 遂溪县| 融水| 张家界市| 台北市| 平度市| 久治县| 齐齐哈尔市| 图木舒克市| 九江市| 洛扎县| 离岛区| 葫芦岛市| 沈丘县| 始兴县| 衡南县| 科尔| 和田市| 哈巴河县| 旅游| 于田县| 青川县| 浙江省| 连云港市| 孟村| 平远县| 安平县|