用于管理任务的 Java 框架

标签 java multithreading frameworks concurrent-programming

我的问题是,Java 中是否存在用于管理和并发运行具有逻辑依赖性的任务的框架。

我的任务如下: 我有很多独立的任务(比方说 A、B、C、D...),它们被实现为命令(就像在命令模式中一样)。我希望有一种执行程序可以接受所有这些任务并以并行方式执行它们。 这些任务可以相互依赖(例如,我不能运行 C,在我运行 A 之前),同步或异步。

我还想结合自定义启发式方法来影响调度程序的执行,例如,如果任务 A 和 B 是 CPU 密集型的,而 C 具有高内存消耗,并行运行 A 和 C 是有意义的,而不是运行 A 和 B。

在自己开始构建这些东西之前(我正在考虑 java.util.concurrent + 基于注释的约束/规则),我想知道是否有人可以指出一些可以满足我需要的项目。 提前致谢

最佳答案

我认为没有一个管理任务的框架可以满足您的要求。使用命令模式,您走在正确的道路上。你可以看看 Akka framework用于简化的并发模型。 Akka基于Actor模型:

The actor model is another very simple high level concurrency model: actors can’t respond to more than one message at a time (messages are queued into mailboxes) and can only communicate by sending messages, not sharing variables. As long as the messages are immutable data structures (which is always true in Erlang, but has to be a convention in languages without means of ensuring this property), everything is thread-safe, without need for any other mechanism. This is very similar to request cycle found in web development MVC frameworks. http://metaphysicaldeveloper.wordpress.com/2010/12/16/high-level-concurrency-with-jruby-and-akka-actors/

Akka 是用 Scala 编写的,但它公开了干净的 Java API。

关于用于管理任务的 Java 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4912581/

相关文章:

java框架复杂度统计

java - 当我想拦截一个方法时,我只能用接口(interface)子类化吗?

java - 对 Oracle java 存储过程中的类解析的混淆

java - 使用 Mockito 模拟服务器-客户端连接

c - 共享内存环境的 C 互斥实现

ios - 在 Objective-C 项目中导入纯 Swift 框架

java - 正则表达式中的标点符号

java - 为不同的时间字符串接收相同的 ZonedDateTime

Java 8 非阻塞读取有竞争条件?

c# - 为什么语言不在核心集成依赖注入(inject)?