我是一家软件公司的顾问,负责使用我的同事开发人员构建的不同工具来支持我们的客户。 我对 java 的经验很少,但我确实阅读代码试图理解它是如何工作的。
我现在正在看一段代码,我不确定我是否理解正确。我向开发人员提出这个问题,等待他的反馈,但我想如果有任何反馈就好了
这就是我正在看的作品。我们有一个表(数据库对象)列表,我们需要对每个表执行相同的操作。 在实现 Runnable 的 Myclass 中定义了相同的操作
final ExecutorService worker = Executors.newFixedThreadPool(8);
...
List.stream()
.parallel()
.filter(table -> table.getRows() > 0 || table.isAutoIncrement())
.forEach(table -> worker.execute(new Myclass())
这是我的问题:
ExecutorService 将用于处理后台线程中的请求。在您的示例中,您有一个包含 8 个线程的线程池。因此,让我们想象一下这里需要完成的工作需要花费大量时间。这里的代码将通过流工作并将工作交给线程池,然后主线程将继续运行而不等待 executorservice 完成。
据我所知,您无法控制通过 parallel() 调用将流分成多少个子流。老实说,由于您将工作交给线程池,所以我不确定并行()调用是否会为您做很多事情。