<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 一、概述 比如輪詢大量的記錄,這種job,可能會一次輪詢耗時數個小時到數天,那么,對于業務來說,是無法接受的;這個時候,平臺支持通過引入派生多線程的并發解決方案; ## 二、解決方案 通過動態派生多線程來實現,通過一個例子,來參考實現; #### **調用核心邏輯** ``` SynCardDataApi api = getJobLogicTransactionalApi("synCardDataApi"); StringBuffer hql = new StringBuffer("from CardInfo where USER_ID >0"); List<CardInfo> cardlist = manager.getTransactionalCardDao().querySimpleHql(hql.toString()); List<List<CardInfo>> cardpackageList = ListUtil.splitListByPerListSize(cardlist, 1000); int threadNum = cardpackageList.size(); new SynCardDataRunCaller().call(threadNum, cardpackageList, api, manager, jobexecution); ``` #### **派生調用類** ``` public static class SynCardDataRunCaller extends TemporyTaskCaller { @Override public void createThreadToExecutionTask(int threadNum, ExecutorService executor, CountDownLatch currentMainThreadLatch, Object[] callerTranferdBusinessObjects) { for (int i = 0; i < threadNum; i++) { List<List<CardInfo>> cardpackageList = getBusinessObject(0); List<CardInfo> cardinfolistPer = cardpackageList.get(i); Runnable task = new SynCardDataRunThread(currentMainThreadLatch, appendToEndOfCallerTranferdBusinessObjects(cardinfolistPer)); executor.execute(task); } } } ``` #### **派生線程類** ``` public static class SynCardDataRunThread extends TemporyTaskThread { public SynCardDataRunThread(CountDownLatch callerCountDownLatch, Object[] callerTranferdBusinessObjects) { super(callerCountDownLatch, callerTranferdBusinessObjects); } @Override public void doBusinessInThread(Object[] callerTranferdBusinessObjects) { logger.error("{}開始運行", Thread.currentThread().getName()); SynCardDataApi api = getBusinessObject(1); JobManager manager = getBusinessObject(2); JobExecution jobexecution = getBusinessObject(3); jobexecution.append("{}開始運行", Thread.currentThread().getName()); List<CardInfo> cardlist = getBusinessObject(4); for (CardInfo cardinfo : cardlist) { try { api.doProcess(manager, cardinfo, jobexecution); } catch (Exception ex) { UniframeworkLogUtil.logJobException(ex); } } logger.error("{}完成運行", Thread.currentThread().getName()); } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看