怎么优化线程的run方法

发布于 2021-11-21 19:43:46 字数 1353 浏览 954 评论 1

该线程占用cpu时间长,并且占用内存多。run方法哪地方需要优化,请大侠们指教,坐等回答...

下面是线程的run方法,该方法的作用是检查数据库中有没有未处理的事件,如果有,就处理。    

     while条件一直是true  

     commonService.basicQuery()方法是来查询数据库  

     catch中的doPauseThread()方法是让该线程睡5秒

public void run() {
		String err = "Error occurred in FlightEventThread, Administrated";
		while (isThreadAlive) {
			try {
				List<FlightEvent> allEvent = commonService.basicQuery(
						FlightEvent.class, (Object) exampleEvent, true,
						"eventId");
				for (FlightEvent event : allEvent) {
					event.setIsProcessed("P");
					commonService.basicUpdate(event);
					IEventProcessor eventProcessor = (IEventProcessor) Global.applicationContext
							.getBean(event.getEventProcess().getProcessBean());
					eventProcessor.setEvent(event);
					try {
						eventProcessor.execute();
						eventProcessor.doSendMessageToFront();
					} catch (IllegalDataException ie) {
						log.error(err, ie);
					} catch (Exception e) {
						log.error(err, e);
					}
				}
				/* Sleep is not needed disable by hwlcsx  */
				/*doPauseThread();*/
			} catch (Exception e) {
				log.error(err, e);
			}
			finally{
				doPauseThread();
			}
		}
	}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

裸钻 2021-11-22 06:21:30

doPauseThread 这个怎么写的? Thread.sleep?,而且 你可以把业务代码 一部分 一部分的去掉来调试,再看CPU占用率高不

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文