用于演示标题中的想法的代码示例:
executor.submit(runnable1);
executor.submit(runnable2);
我需要确保 runnable1 将在 runnable2 启动之前完成,并且我在执行程序文档中没有找到此类行为的任何证据。
关于我正在解决的问题: 我需要将大量日志写入文件。每个日志都需要大量的预计算(格式化和其他一些东西)。因此,我想将每个日志记录任务放入一种队列中,并在单独的线程中处理这些任务。当然,保持日志有序也很重要。
最佳答案
单线程执行器将按照提交的顺序执行所有任务。如果您希望同时执行任务,则只能使用具有多个线程的线程池。
将任务添加到队列本身的成本就很高。您可以使用这样的 Exchanger
这可以避免使用队列或创建对象。
另一种更快的替代方法是使用不需要后台线程的内存映射文件(实际上操作系统在后台工作),这又快得多。它支持亚微秒延迟和每秒数百万条消息。
关于java - java并发包中是否有任何执行器可以保证所有任务都按照提交的顺序完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9410422/