我正在开发一个android应用程序,在应用程序中我正在执行很多后台任务。要求是所有请求都应该串行处理并且可以并行执行。例如:假设我一个接一个地收到任务请求。要添加这些任务,我正在维护一个请求队列。假设当前队列状态是
(头)任务1-
我有一个并行执行任务的线程池。执行者总是在头部选择任务并提交给线程池执行。在我的需求中,有时我需要从队列中删除不再需要的任务。而且设计是这样的,即删除不再需要的旧任务。假设线程池正在执行Task1和Task2,而其余任务正在队列中等待。当前队列状态为
(头部)任务3-任务4-任务5-任务6(尾部)
假设调用以删除旧任务,即Task3和Task4。应删除这些任务,并将Task4作为线程池的下一个任务提交。
我需要的是:我需要一个工作经理来像1一样管理这些操作。持续检查请求队列并将任务分派到线程池2。每当调用removeTask时,请删除任务,然后继续从队列中分派事件,直到队列变为空3。如果队列变空,线程需要等待/Hibernate,直到下一个请求到达队列。4、作业管理器应监视和拾取队列中的任务并在执行器服务中执行,当队列为空时进入等待状态或睡眠状态,当队列中有项目时醒来执行任务并继续。。5.(重要)我希望在访问请求队列时优先考虑UI线程。
我拥有的:1。UI线程和作业管理器(另一个反向线程)2共享的请求队列的原子引用。准备好的任务
我想用
while(true) {
//check for any items in the queue and execute
}
在job manager run()方法中,但当队列为空时,这会不必要地消耗CPU
请为我提供jobManager的逻辑。
还有一个问题。创建请求队列的原子引用是否可以确保线程安全?还是我应该使请求队列变量同步?
请为我提供jobManager的逻辑。
您不需要从头开始实现它。相反,只需使用ExecutorService
API。
据我所知,您尝试做的所有事情都可以使用该API完成。甚至可以处理给予UI线程优先访问权的要求;e、 g.使用优先队列。
从零开始实施作业管理器以满足这些需求(坦率地说)是毫无意义的。
以下是Android文档中关于线程池和最佳实践的一些信息:https://developer.android.com/training/multiple-threads/index.html
它们提供了有关如何创建和使用线程池来处理后台操作的示例。
null 所以你可以不受任何限制地做背景工作。尽管由于这些原因您应该使用服务,但链接。 这是做背景工作的另一种方式(当然不是更好,但仍然是一种方式)吗?我错了吗?
我确信这两个列表都不是空的,并且正在调用,但是没有调用order execution run方法....
本文向大家介绍基于C#实现的轻量级多线程队列图文详解,包括了基于C#实现的轻量级多线程队列图文详解的使用技巧和注意事项,需要的朋友参考一下 前言 工作中我们经常会遇到一些一些功能需要实现造作日志,数据修改日志,对于这种业务需求如果我们以同步的方式实现,难免会影响到系统的性能。如下我列出集中解决方案。 使用Thread异步处理。 使用线程池或Task异步处理。 以上两种方案确实能解决我们此场景的需求
默认情况下,C++容器应该是线程安全的。我必须错误地使用多线程,因为对于此代码: 我得到了:
我有一个场景,其中多个线程正在写入同一队列。 Appender线程从不同的市场(每个线程都是单一市场)接收更新,并将这些数据推入相同的队列:
如何将CronTimer迭代器设置为1?或者如何停止排定程序多次执行作业。 有什么建议吗?谢谢,古扬·沙阿。