Справочная информация: в правительстве была разработана система заявок. Основная функция состоит в том, чтобы позволить предприятию заполнить информацию о квалификации предприятия, а затем использовать данную формулу, чтобы подсчитать эту серию информации, и показать ее правительственным лидерам в форме баллов. В настоящее время 1300 компаний заполняют отчет. Поскольку оценка отображается в режиме реального времени, функция статистики медленная.
Процесс запуска кода :
1. Узнайте 1300 корпоративной информации
2. Траверс 1300 Информация о предприятии и рассчитайте информацию о оценке каждого предприятия. Ожидается, что каждая компания будет иметь время 0,3 секунды. Всего 390 секунд. Приводит время ожидания запроса страницы
3. Экспорт (с помощью JXL JAR)
Решение:
Поскольку он занимается бизнесом, необходимо иметь потоки, которые могут возвращать значения. Использование: Callible
Прямая загрузка кода
1. Код, который вызывает поток
Список <map <string, object >> list = (list <map <string, object >>) map.get ("row"); int tasksize = 20; // Создать executorservice pool = executors. {System.out.println("I enable multithreading lalala");int evgCount = list.size()/taskSize;Callable c = new MyCallable(list.subList(evgCount*i, evgCount*(i+1)),session,staticFlag,declareService,declareMasterService,enterpriseQueryService);// Execute the task and get Future Object Future f = pool.submit (c); // Получить результаты выполнения всех одновременных задач <map <string, object >> listresult = new ArrayList <map <string >> (); Object >> (); try {listModel = (list <map <string, object >>) f.get ();} catch (прерывание Exception e) {e.printStackTrace ();} catch (executionException e) {e.printstacktrace ();} listresult.addall (listmodel);2. Код потока
Пакет usi.jszx.controller; import java.util.list; import java.util.map; import java.util.concurrent.callable; импорт javax.servlet.http.httpsession; import org.apache.commons.lang3.stringutils; importm.jszx.Entity.Scority. usi.jszx.service.declaremasterservice; import usi.jszx.service.declareservice; import usi.jszx.service.declareservice; импорт usi.jszx.service.enterprisequeryservice; import usi.dto.authinfo; usi.sys.util.constantutil; Class MyCallable реализует Callable <object> {// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- MyCallable (список <map <string >> список, сеанс httpsession, String staticflag, DeclaReservice DeclarService, DeclareMasterService declareMasterService, EnterpriseQuerService EnterpriseQuerService) {this.List = list; session = session; this.staticflag = staticflag; this.decles; this.session = this.staticflag = staticflag; this.declares = this.session = this.staticflag = staticflag; this.declares this. DeclareService; this.declareMasterService = declareMasterService; this.EnterPriseQuerService = EnterpriseQuerService;}@overridePublic Object Call () Throws Exception {Authinfo info = (Authinfo) Session.TeartTtrю (constantUtil.Auth_info); для (int i = 0; {Map <string, object> maplist = list.get (i); string mainid = maplist.get ("id")+""; this.grademaster (session, mainid, maplist.get ("orgid")+"", declaremasterservice, enterprisequeryservice); deckremasterservice.queryscoremain (maplist.get ("id")+"", info.getrighttype (), "report"); // declaremasterservice.queryscoremain (mainid, info.getrighttype (), isreport); int isdouble = 1; if (listscore.size ()> 30) {maptotor.put.put.put.put.pute., ",", "ifscore.size ()> 30). listscore.get (46) .get ("score")); isdouble = 2;} else if (listscore.size ()> 22) {maplist.put ("socretotal", listscore.get (23) .get ("score"));} if ("3" .equals (staticflag)) {int j = 0; j <23; {if (j <9) {maplist.put ("value0"+(j+1), listscore.get (j*isdouble) .get ("show_value"));} else {maplist.put ("value"+(j+1), listscore.get (j*isdouble). Get ("show_value"); maplist.get ("countyid")+""; if ("340826" .equals (countyId) || "341822" .equals (ountaid)) {maplist.put ("cityName", maplist.get ("countyName")+"");} // Строка корпоративного типа Declare_Evaluate = maplist.get ("dercarare_evaluate")+""; if ("1" .equals (declare_evaluate)) {maplist.put ("dercarare_evaluate_name", "declaration");} else {maplist.put ("dercarare_evaluate_name", "evaluation"); maplist.get ("shstatus")+""; if ("9" .equals (shstatus)) {maplist.put ("strshstatus", "draft");} else if ("0". equals (shstatus)) {maplist.put ("strshstatus", "Enefrise '); if ("1" .equals (shstatus)) {maplist.put ("strshstatus", "Городский обзор передается");} else if ("2" .equals (shstatus)) {maplist.put ("strshstatus", "City Review Moder");} else if ("3". equals (shstatus) {maplist (strshile -streviltial (strshial "," strshial "," strshial "," strShiLial "," strShiLial "," strShiLial ". Прошло ");} else if (" 4 ".equals (shstatus)) {maplist.put (" strshstatus "," провинциальный обзор не удался ");} else if (" 5 ".equals (shstatus)) {maplist.put (" strshstatus "," провинциальный обзор ");} if ("6" .equals (shstatus)) {maplist.put ("strshstatus", "вернуться к модификации предприятия");} else if ("7" .equals (shstatus)) {maplist.put ("strshstatus", "City Review");} else if ("11". Объявление ");} else if (" 12 ".equals (shstatus)) {maplist.put (" strshstatus "," modify to evaluation ");} if (" 1 ".equals (staticflag)) {// Добавить список мнений модификации <map <string, object >> declareservice.queryaudlog (maineid); if (listdetail.size ()> 0) {string audit_opinion = listdetail.get (0) .get ("audit_opinion")+""; if (! stringutils.isempty (audit_opinion) &&! "null". else {maplist.put ("audit_opinion", "");}} // используется ли он изменен на string orgname = maplist.get ("orgname")+""; string pjname = maplist.get ("pjname")+""; if (stringutils.isempty (pjname) || "null" .equals (pjname) || pjname.equals (orgname)) {maplist.put ("isgengming", "no"); maplist.put ("pjname_e", "); "Yes");maplist.put("PJNAME_E", PJNAME);} else if("2".equals(staticFlag)){}} return list;}public float gradeMaster(HttpSession session,String mainId,String orgId,DeclareMasterService declareMasterService,EnterpriseQueryService enterpriseQueryService) {AuthInfo info = (Authinfo) session.getAttribute (constantutil.auth_info); string rourntype = info.getrighttype (); declaremasterservice.deletecoremain (mainid); float [] resultfirst = new Float [100];/** Первый запрос Весь список приложений*. Столовая таблица. Хранится * */list <map <string, object >> listdetail = declareMasterService.queryTaskDetail (mainId); if ("2" .equals (roundtype) || "3" .equals (Righttype)) {// преобразовать строку в float for (int i = 0; i <listdetail.size (); i+string <string <string <string <bap <obste <) listDetail.get (i); if (stringUtils.isempty (map.get ("dercarare_city_value")+"") || "null" .equals (map.get ("declare_city_value")+"")) {resultfirst [i] = 0f;} else {resultfirst [i] = float.parsefloat (map.get ("dercorare_city_value")+"");}}} else {// конвертировать строку в floatfor (int i = 0; i <listdetail.size (); i ++) {map <string> map = map = listDetail.get (i); if (stringUtils.isempty (map.get ("dercarare_province_value")+"") || "null" .equals (map.get ("declare_province_value")+"")) {resultfirst [i] = 0f;} else {resultfirst [i] = float.parsefloat (map.get ("dercarare_province_value")+"");}}} map <string, Object> Enterprise = EnterpriseQuerService.getInFobyorgid (orgid) .get (0); // Расчет значения в соответствии с формулой расчетов индекса оценки Anhui Enterprise Conticny Center. Следующим шагом является вычисление коэффициента оценки float1 = 0f; соотношение float2 = 0f; коэффициент float3 = 0f; try {cutio1 = float.parsefloat (Enterprise.get ("cutio1")+""); cutio2 = float.parsefloat (Enterprise.get ("cutio2")+"); float.parsefloat (enterprise.get ("cutio3")+"");} Catch (Exception e) {} map <string, object> map = declareController.getValue (resultFirst, catio1, catio2, cutio3); float [] resultValue = (float [] map.get ("refulValue"); map.get ("resultscorevalue"); float [] resultscore = declareController.getScore (ResultsCoreValue); float scoretotal = 0f; List <String, Object >> listScore = declareMasterService.queryScoredic (); для (int i = 0; i <listscore.size (); Scoremain (); scoremain.setmainid (mainid); scoremain.setscorename (listscore.get (i) .get ("score_name")+""); scoremain.setscoreUnit (listscore.get (i) .get ("scall_unit")+""); scoremain.setscoreweight (listscore.get (i) .get ("score_weight")+""); scoremain.setscoreweight (listscore.get (i) .get ("score_weight")+""); scoremain in.setdisordord (listscore.get (i) .get ("dis_order")+""); scoremain.setShowValue (resultValue [i]+""); scoremain.setscorevalue (ResultsCoreValue [i]+""); scoremain.setscore (Resultscore [i]+""); declaremasterservice.inserscoremain (scoremain); scoretotal += refulscore [i];} return scoretotal;}}ПРИМЕЧАНИЕ: MyCallable - это просто сложный способ управления бизнесом. Его можно игнорировать и, наконец, ускорить с 390 секунд до 40 секунд.
Суммировать
Выше приведено все содержимое этой статьи о примере кода решения многопоточного выполнения и обработки Java. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!