2013-08-06 60 views
0

我有一个特殊的代码在池线程开始执行时执行,另一个代码在完成时执行。Akka中的自定义线程逻辑

我的意思是,需要在线程启动之前调用initialize()以执行actors代码,然后执行cleanup()以初始化线程特定的资源(数据库连接作为示例)和清理(Close任何已经打开的连接)

在线程范围内执行它将会很棒。我正在考虑与所有演员混合在一起,但在这个范围内,演员的初始化。如果我通过线程创建,我想我会有更好的表现。

任何建议将不胜感激!

感谢

+0

akka的目的是你不应该考虑低级线程。然而,如果你真的想这样做,我会用Actor A {处理你的初始化和清理}来构造你的actor系统,然后产生它自己的Actor B {工作者来处理其他事情}。 –

+0

使用固定角色和线程池执行器来固定你的角色。默认分派器将在线程之间共享角色。 – vitalii

回答

0

尤其是对你的清除代码,你会遇到麻烦,因为没有钩子,你可以使用。我建议使用Actor生命周期来建立资源生命周期的模型,即在启动actor并在postStop中关闭时创建一个数据库连接。然后,不要使用ThreadLocal数据库句柄,而是将DB查询发送给(池)actor。别担心自己的线索,那就是阿卡的工作。