作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要重构代码以查看它是否可以帮助我解决“无法打开 Hibernate Session 进行事务”。我目前正在尝试简化代码中处理线程的方式。
现有代码如下所示。让我们称之为“代码A”:
if (!CollectionUtils.isEmpty(dailyReportProjectList)) {
for (ProjectEntity project : dailyReportProjectList) {
Thread.sleep(2000);
new Thread(() -> {
try {
// Implementation Logic
if (isConfig == true) {
// Generating Daily Report
if (dailyRep != null) {
LOG.info(
"============start of daily report mail for zone : " + zone + ", newZone : "
+ newZone + " for date : " + currOrPrevDay + "===============");
new Thread(() -> {
try {
//genericController;
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
} else {
//"All 4 default reports for site : " + project.getId() + ", empId:" + project.getEmployerId());
}
}
}
LOG.info("End of generateReportByZone >> zone : " + zone);
} catch (Exception e2) {
e2.printStackTrace();
}
}
}).start();
}
}
为了简化这一点,我决定继续使用 Executor Service。我提到了一些例子,我对使用 service.submit() 或 service.execute() 感到困惑。
public class ReportProcessor implements Runnable {
private int id;
public ReportProcessor (int id){
this.id = id;
}
public void run(){
try {
String currOrPrevDay = new String();
...// write the code in the try element of 'code A' here onwards
for (i = 0; i < dailyReportProjectList.length; i ++){
service.submit(new ReportProcessor(i));
}
最佳答案
不要传递线程、传递 lambda 或任何“可运行”的东西。
ExecutorService service = Executors.newFixedThreadPool(3);
for (int i = 0; i < 10; i++) {
final int number = i;
service.execute(() -> System.out.println("test" + number));
}
编辑:
dailyReportProjectList.parallelStream()
.filter(condition)
.forEach(doSomething)
流自己管理线程。
关于java - 如何通过传递新线程作为参数来执行执行器服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65739455/
嘿。本周的一个教程,其中一个问题要求通过使用其他函数 formatLine 和 formatList 创建一个函数 formatLines,以格式化行列表。 我的代码是这样的; type Line =
我是一名优秀的程序员,十分优秀!