2

我确实有带有大量线程和线程池的 Java 应用程序。我们可以使用 AKKA 来代替线程和线程池吗?

4

2 回答 2

2

这取决于你的线程在做什么。他们是在做阻塞 IO 还是在自己之间获取锁和共享可变数据?如果是这样,akka 可能不太适合,因为演员通常应该避免阻塞 io 或锁。另一方面,如果线程做独立的非阻塞工作,并且可以通过消息传递进行通信,akka 可能是一个不错的选择。

于 2012-07-11T02:15:38.610 回答
2

是的,你绝对可以。请注意上述海报的回应。这并不完全准确。Actor 可以阻塞 I/O。您只需使用子角色来表示每个阻塞连接。新手的错误是像对待线程一样对待演员......在这种情况下,上面的海报的答案是正确的。但是,如果您将阻塞传递给较低的参与者并每次都使用临时参与者,您将永远不必阻塞主要吞吐量。

但是,请原谅我。我已经偏离了轨道。简而言之,是的,你可以。但请记住,会有一个学习曲线。Actors 编程是一种不同的范式,需要以不同的方式处理。

然而,使用 actor 进行并发编程比使用线程和锁定(字面意思)要容易得多。只需让您的应用程序响应式而不是基于时间的,许多并发问题就会停止存在。

查看他们网站上的 AKKA 文档。他们非常彻底。还有 Akka 并发和有效 Akka 的书籍。把它们放在桌子上作为参考。

于 2013-11-13T06:25:39.953 回答