Heim >Java >javaLernprogramm >Kapselung von Java-Multithread-Verarbeitungsaufgaben
In letzter Zeit verwenden viele Teile des Projekts Multithreading, um einige Aufgaben zu verarbeiten. Der Logikcode und der Java-Multithreading-Verarbeitungscode sind miteinander vermischt, was zu einer extrem schlechten Lesbarkeit des Codes führt Java-Multithreading wird extrahiert und die Aspekte des Codes werden wiederholt. Es ist nicht gut, jeder kann es gerne ausprobieren
Die Verwendungsmethode ist sehr einfach, es gibt zwei Möglichkeiten, es zu verwenden
1. Übergeben Sie einen Stapel von Aufgaben direkt an den Multithread Verarbeitungsmethode und Rückgabe der Verarbeitungsergebnisse
Der Code lautet wie folgt:
/** * Created with IntelliJ IDEA. * 测试多线程处理任务 * className: TaskMulThreadServiceTest * * @version 1.0 * Date Time: a *@author: ddys */public class TaskMulThreadServiceTest extends TestCase implements ITaskHandle<String,Boolean>{ public void testExecute() throws Exception { String [] taskItems = new String[100]; for (int i=0;i<100;i++){ taskItems[i]="任务"+i; } IMulThreadService<String,Boolean> mulThreadService = new TaskMulThreadService(this); long start = System.currentTimeMillis(); List<Boolean> result = mulThreadService.execute(taskItems); for (Boolean e : result){ if(!e){ System.out.println("任务处理失败"); } } System.out.println("所有任务处理完成,耗时"+(System.currentTimeMillis()-start)+",任务成功数"+result.size()); } /** * Created with IntelliJ IDEA. * 执行任务,返回所有执行的结果 * className: TaskMulThreadService * * @author: ddys * @version 1.0 * Date Time: */ public Boolean execute(String s) { System.out.println(Thread.currentThread().getId()+"线程正在处理"+s); return true; } }
2. Angehängt ist eine Abfrageaufgabenmethode. Implementieren Sie diese Abfrageaufgabenmethode und die Geschäftsverarbeitungsmethode und führen Sie sie dann aus und geben Sie die Verarbeitungsergebnisse zurück
Der Code lautet wie folgt:
ate Time: a *@author: XWK */ public class SelectTaskMulThreadServiceTest extends TestCase implements ISelectTask<String,Boolean>{ public void testExecute() throws Exception { IMulThreadService<String,Boolean> mulThreadService = new SelectTaskMulThreadService(this); long start = System.currentTimeMillis(); List<Boolean> result = mulThreadService.execute(); for (Boolean e : result){ if(!e){ System.out.println("任务处理失败"); } } System.out.println("所有任务处理完成,耗时"+(System.currentTimeMillis()-start)+",任务成功数"+result.size()); } /** * Created with IntelliJ IDEA. * 执行任务,返回所有执行的结果 * className: TaskMulThreadService * * @author: ddys * @version 1.0 * Date Time: */ public Boolean execute(String s) { System.out.println(Thread.currentThread().getId()+"线程正在处理"+s); return true; } /** * @param 'a 传递参数 * @return a 回类型 * @throws * @Title: a * @Description: 获取一批任务 * @author ddys * @date 2015-11-15 21:09 */ public String[] getTaskItem() { String [] taskItems = new String[100]; for (int i=0;i<100;i++){ taskItems[i]="任务"+i; } return taskItems; } }