当前位置: 首页 > 科技观察

Java多线程处理任务的封装

时间:2023-03-12 18:25:45 科技观察

最近公司项目的很多地方都使用了多线程来处理一些任务。逻辑代码和Java多线程处理代码混在一起,导致代码的可读性极差。现在,将Java多线程相关的处理抽取出来,在代码中复用。使用方法很简单,有两种使用方法1.直接将一批任务转给多线程处理方法,返回处理结果代码如下:/***CreatedwithIntelliJIDEA.*Testmulti-threaded处理任务*className:TaskMulThreadServiceTest**@version1.0*DateTime:a*@author:ddys*/publicclassTaskMulThreadServiceTestextendsTestCaseimplementsITaskHandle{publicvoidtestExecute()throwsException{String[]taskItems=newString[100];for(inti=0;i<100;i++){taskItems[i]="task"+i;}IMulThreadServicemulThreadService=newTaskMulThreadService(this);longstart=System.currentTimeMillis();Listresult=mulThreadService。execute(taskItems);for(Booleane:result){if(!e){System.out.println("任务处理失败");}}System.out.println("所有任务处理完成,耗时"+(System.currentTimeMillis()-start)+",任务成功数"+result.size());}/***用IntelliJIDEA创建。*执行任务,返回所有e执行结果*className:TaskMulThreadService**@author:ddys*@version1.0*DateTime:*/publicBooleanexecute(Strings){System.out.println(Thread.currentThread().getId()+"线程正在处理"+s);returntrue;}}2、附加一个查询任务方法,实现查询任务方法和业务处理方法,然后执行返回的处理结果代码如下:ateTime:a*@author:XWK*/publicclassSelectTaskMulThreadServiceTestextendsTestCaseimplementsISelectTask{publicvoidtestExecute()throwsException{IMulThreadServicemulThreadService=newSelectTaskMulThreadService(this);longstart=System.currentTimeMillis();Listresult=mulThreadService.execute();for(Booleane:result){if(!e){System.out.println("任务处理失败");}}System.out.println("所有任务完成,耗时"+(System.currentTimeMillis()-start)+",任务成功次数"+result.size());}/***CreatedwithIntelliJIDEA.*执行任务并返回所有执行结果*className:TaskMulThreadService**@author:ddys*@version1.0*DateTime:*/publicBooleanexecute(Strings){System.out.println(Thread.currentThread().getId()+"线程正在处理"+s);returntrue;}/***@param'a传递参数*@returna返回类型*@throws*@Title:a*@Description:获取一批任务*@authorddys*@date2015-11-1521:09*/publicString[]getTaskItem(){String[]taskItems=newString[100];for(inti=0;i<100;i++){taskItems[i]="task"+i;}returntaskItems;}}