Heim  >  Artikel  >  Java  >  Kapselung von Java-Multithread-Verarbeitungsaufgaben

Kapselung von Java-Multithread-Verarbeitungsaufgaben

伊谢尔伦
伊谢尔伦Original
2016-12-05 11:16:021251Durchsuche

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 &#39;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;
    }
}


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn