- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的代码片段:
AppExecutors.getInstance().diskIO().execute(new Runnable() {
@Override
public void run() {
// work 1
}
});
JSONArray apiResponseGet = ApiHelper.getInstance().getData();
if(apiResponseGet == null)
throw new Exception("Api call failed");
AppExecutors.getInstance().diskIO().execute(new Runnable() {
@Override
public void run() {
// work 2
}
});
除了这段代码之外,我要做的是启动 work 1
,然后,在执行 work 1
时,向 api 发出请求,并在 api 调用完成后保存它结果工作 2
。
这里的问题是,work 2
必须在 work 1
完成后执行。如果工作 2
在工作 1
完成之前开始,这可能会导致我的应用行为异常。
通常,对 API 的调用将比 work 1
花费更长的时间,但我们现在假设 api 调用已完成,并且 work 1
仍在运行。由于diskIO是SingleThreadExecutor,这是否意味着,由于它是单线程,在这种情况下,工作2必须等到工作1完成?
如果答案是否定的,如何确保当 work 2
开始时,work 1
已经完成?
最佳答案
Tasks are guaranteed to execute sequentially, and no more than one task will be active at any given time.
因此,在您的情况下,工作 2
必须等到工作 1
完成。
关于java - java `SingleThreadExecutor` 是否保证前一项工作在新工作开始之前完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60812903/
我试图(简单地)创建一个阻塞线程队列,当提交任务时,该方法将等待直到其完成执行。但最困难的部分是等待。 这是我的 12:30 AM 代码,我认为它有点过分了: public void sendMsg(
这是我的代码片段: AppExecutors.getInstance().diskIO().execute(new Runnable() { @Override public void
我有实现 Runnable 的类: public class Abc implements Runnable{ public synchronized void run(){
什么时候应该在 java 中使用 singleThreadExecutor?另外,什么时候应该使用缓存线程池?在文档和书籍中都指定了 singleThreadExecutor 优于 fixedThre
每次我们执行多次提交操作时,我说得对吗: ExecutorService executor = Executors.newSingleThreadExecutor( new M
这个问题在这里已经有了答案: Is ExecutorService (specifically ThreadPoolExecutor) thread safe? (6 个答案) 关闭 4 年前。 我
这个问题是关于使用 SingleThreadExecutor (JDK 1.6) 的后果。相关问题之前已在本论坛中提出并回答过,但我相信我面临的情况有点不同。 应用程序的各个组件(我们称之为组件 C1
除了 Executor 接口(interface)比普通线程有一些优势(例如管理)之外,在做: ExecutorService executor = Executors.newSingleThread
我正在研究如何使用 Android 中的 Room 将数据写入 SQlite 数据库的教科书示例。显然,我们不能从主线程将数据写入数据库,但我们需要一个后台线程。在我的书中,我们所做的是,我们创建一个
我在单例中创建了以下执行器: final private ExecutorService executor = Executors.newSingleThreadExecutor(new Thr
我是一名优秀的程序员,十分优秀!