java - ExecutorService 以串行顺序执行runnable

标签 java multithreading threadpool threadpoolexecutor

我正在使用带有 newSingleThreadExecutor 的执行程序服务以串行顺序执行我的 Runnable 任务,但是似乎不能保证串行执行顺序,因为有时任务以随机顺序执行。

executorService =  Executors.newSingleThreadExecutor();
executorService.submit(MyTask1);
executorService.submit(MyTask2);

MyTask 执行一些异步操作并将结果发送回我正在执行任务的类。

尽管文档说,必须连续执行 newSingleThreadExecutor () 任务,但我无法找出我在这里遗漏的内容。我们将不胜感激。

谢谢

最佳答案

由于执行顺序保证是连续的,您可能没有在实际运行的代码中使用单线程执行器。

作为变通方法,提交一个任务来完成两个事情:

executorService.submit(() -> {MyTask1.run(); MyTask2.run();});

关于java - ExecutorService 以串行顺序执行runnable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53700253/

相关文章:

java - 使用共享的 ExecutorService 作为任务队列,我如何知道作业何时完成?

c# - 我是否需要使用 try catch 或检查 ThreadPool.QueueUserWorkItem 的返回值

java - Java 中的解析文件和模式检测

java - 如何将查找与字符串绑定(bind)

Java - ReentrantLock,锁无法解锁

java - 两次启动另一个 Activity 时,线程不更新 textview

java - 使用 Spring、JUnit 和 Mockito 模拟 Autowiring 组件内的方法

java - Facebook 营销 API 使用 API 自定义网站受众定位

c++ - 理解 C++11 中的 std::atomic::compare_exchange_weak()

c# - 如何使用 SmartThreadPool 取消-等待-杀死一个工作项?