- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在Android中,什么线程可运行传递给ScheduledExecutorService#schedule(Runnable command, long delay, TimeUnit unit)从 Executors#newSingleThreadScheduledExecutor() 返回运行在?
至于我的努力,我运行以下代码:
final ScheduledExecutorService ses = Executors.newSingleThreadScheduledExecutor();
ses.schedule(new Runnable() {
@Override
public void run() {
inflate.setBackgroundDrawable(background);
}
}, 200, TimeUnit.MILLISECONDS);
ses.shutdown();
在 Moto G 2013、Android 5.0.2 上,setBackgroundDrawable 操作工作正常,意味着它在主 (UI) 线程上运行。
具体来说,这对于所有 Android 版本和设备都是如此吗?链接的 javadoc 页面对此没有任何说明。我想避免像服务可以生成一个新的单线程来运行操作之类的陷阱。
最佳答案
调用Executors.newSingleThreadScheduledExecutor()
时,将创建一个新的Thread
(属于同一ThreadGroup
)。隐式使用的 DefaultThreadFactory
看起来像这样
static class DefaultThreadFactory implements ThreadFactory {
private static final AtomicInteger poolNumber = new AtomicInteger(1);
private final ThreadGroup group;
private final AtomicInteger threadNumber = new AtomicInteger(1);
private final String namePrefix;
DefaultThreadFactory() {
SecurityManager s = System.getSecurityManager();
group = (s != null)? s.getThreadGroup() :
Thread.currentThread().getThreadGroup();
namePrefix = "pool-" +
poolNumber.getAndIncrement() +
"-thread-";
}
public Thread newThread(Runnable r) {
Thread t = new Thread(group, r,
namePrefix + threadNumber.getAndIncrement(),
0);
if (t.isDaemon())
t.setDaemon(false);
if (t.getPriority() != Thread.NORM_PRIORITY)
t.setPriority(Thread.NORM_PRIORITY);
return t;
}
}
如果你想重用 UI-Thread,你应该编写自己的 ThreadFactory
返回 UI-Thread 并调用 Executors.newSingleThreadScheduledExecutor(yourNewlyCreatedThreadFactory)
关于java - 在Android中,什么线程可运行传递给Executors.newSingleThreadScheduledExecutor运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28298654/
在这篇文章中,我们将结合实例讨论Executors newSingleThreadScheduledExecutor()方法。 Executors.newSingleThreadScheduledEx
如果我为 ScheduledExecutorService 安排了多个任务,但我已经确定只能有一个线程来执行所有任务,每个任务会按顺序执行吗? 例如:在下面的场景中会发生什么 ScheduledExe
javadoc Executors.newSingleThreadScheduledExecutor 说“...返回的执行器保证不能重新配置以使用其他线程”。 上面这句话是什么意思?这是否意味着返回的
这个问题已经有答案了: ScheduledExecutorService, how to stop action without stopping executor? (2 个回答) 已关闭 6 年前
在 Android 中,我试图启动一个线程,该线程会自行终止或在某个超时限制(例如 20 秒)后被执行程序取消?所以 runnable 只会在那么多秒内完成它的工作而不是取消... 我如何实现这一点?
我的要求是制作一个服务,在特定时间间隔后继续检查队列并处理队列中的元素。 为了在 10 秒后安排任务,我使用: ScheduledExecutorService schd = Executors.ne
这个执行器有什么已知问题吗?还是我用错了?我需要安排上传在单独的线程,我希望在当前上传完成后的特定时间后触发下一次上传。 因此,我的服务实现中有一些代码摘录: ScheduledExecutorSer
如何在不使用 Executors.newSingleThreadScheduledExecutor 的情况下创建具有单线程的 ScheduledThreadPoolExecutor ? 我想这样做的原
我想知道 Executors 类的这两种方法有什么区别?我有一个 Web 应用程序,我每 100 毫秒检查一些数据,这就是为什么我将此调度程序与 scheduleWithFixedDelay 方法一起
我按照以下链接实现了单线程调度执行器 Link to example 我有点困惑为什么在 scheduleAtFixedRate 方法之后调用 schedule 方法。 这里使用schedule方法的
上下文: 这是一个 Jersey 应用程序 在 Tomcat 服务器上运行 使用 Hibernate 连接到 MySQL 数据库 一切都在 Netbeans 我正在创建一个 ScheduledExec
我是一名优秀的程序员,十分优秀!