Java开发2.0: Kilim简介 - 编程入门网
this.answer = ans;
}
public BigDecimal getAnswer(){
return answer;
}
public String printAnswer() {
return "The answer of " + dividend + " divided by " + divisor +
" is " + answer;
}
}
Java开发2.0: Kilim简介(4)时间:2011-10-22 IBM Andrew GloverDeferredDivision DeferredDivision 类中使用了特定于 Kilim 的类。该类执行多项操作,但总体来讲它的工作非常简 单:使用随机数(类型为 BigDecimal)创建 Calculation 的实例,将它们发送到 Calculator 角色。而 且,该类还会检查共享的 MailBox,以查看其中是否有任何 Calculation。如果检索到的一个 Calculation 实例有一个答案,DeferredDivision 将打印它。 清单 2. DeferredDivision 创建随机除数和被除数
从清单 2 可以看到,DeferredDivision 类扩展了 Kilim 的 Task 类型,后者实际上模仿了角色模型 。注意,该类还改写了 Task 的 execute 方法,后者默认情况下抛出 Pausable。因此,execute 的操作 将在 Kilim 的调度程序控制下进行。也就是说,Kilim 将确保 execute 以一种安全的方式并行地运行。 在 execute 方法内部,DeferredDivision 创建 Calculation 的实例并将它们放在 Mailbox 中。它 使用 putnb 方法以一种非阻塞方式完成此任务。 填充 mailbox 后,DeferredDivision 进入休眠状态 —— 注意,与处于休眠状态的内核线程不同, 它是由 Kilim 托管的轻量型线程。当角色唤醒之后,像前面提到的一样,它在 mailbox 中查找任何 Calculation。此调用也是非阻塞的,这意味着 getnb 可以返回 null。如果 DeferredDivision 找到一 个 Calculation 实例,并且该实例的 getAnswer 方法有一个值(也就是说,不是一个已由 Calculator 类型处理过的 Calculation 实例),它将该值打印到控制台。 Java开发2.0: Kilim简介(5)时间:2011-10-22 IBM Andrew GloverCalculator Mailbox 的另一端是 Calculator。与清单 2 中定义的 DeferredDivision 角色类似,Calculator 也 扩展了 Kilim 的 Task 并实现了 execute 方法。一定要注意两个角色都共享同一个 Mailbox 实例。它 们不能与不同的 Mailbox 通信,它们需要共享一个实例。相应 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |