public void batchInsert(List<entity> arrList){
MultiThreadExample example = new MultiThreadExample("当前的service"); //service层传this
example.saveDataConcurrently(arrList);
}
import Iserveice ;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class MultiThreadExample {
@Autowired
private final Iserveice service;
public MultiThreadExample(Iserveice service) {
this.service = service;
}
public void saveDataConcurrently(List<List<entity>> entities) {
ExecutorService executorService = Executors.newFixedThreadPool(10); //线程数量
for (List<entity> list : entities) {
executorService.submit(new Callable() {
@Override
public String call() throws Exception {
//多线程要执行的逻辑 例如:保存进数据库
service.saveBath(list);
return "";
}
});
}
executorService.shutdown();
try {
executorService.awaitTermination(1, TimeUnit.SECONDS);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new RuntimeException(e);
}
}
}