相关疑难解决方法(0)

如何在CLI应用程序中"拦截"Ctrl + C?

如何在CLI(命令行界面)Java应用程序中拦截 Ctrl + C(通常会终止进程)?

是否存在多平台解决方案(Linux,Solaris,Windows)?

我使用ConsolereadLine(),但如果有必要,我会用一些其他的方法来读取从标准输入的字符.

java command-line stdin copy-paste command-line-interface

81
推荐指数
3
解决办法
6万
查看次数

Scala actor可以同时处理多条消息吗?

回复到我最近的问题表明,一个演员处理其消息一次一个.这是真的?我没有看到任何明确说明(在Scala编程),其中包含以下代码段(第593页)

如果[ react方法]找到可以处理的消息,[it]将调度该消息的处理以便以后执行并抛出异常

(强调我自己).两个相关(和互斥)的问题:

  1. 假设演员可以同时处理多个消息,我怎样才能强制演员一次处理消息1(如果这是我想做的话)?(用receive?)
  2. 假设一个actor一次处理一个消息,我怎样才能最好地实现一个实际上可以同时处理消息的actor

编辑:做一些测试似乎证明我错了,演员确实是连续的.所以问题#2我需要回答

concurrency scala actor

28
推荐指数
2
解决办法
5178
查看次数

当我的Java应用程序退出/崩溃时,如何摆脱Java子进程?

我用Java启动子进程如下:

final String[] cmd = {"<childProcessName>"};
Process process = Runtime.getRuntime().exec(cmd);
Run Code Online (Sandbox Code Playgroud)

它现在在后台运行.一切都好又好.

如果我现在的程序崩溃(这仍然在开发中:-))子进程似乎仍流连.如何在父Java进程终止时自动结束?

如果它有帮助,我使用的是Mac OS X 10.5

java process-management subprocess runtime shutdown

14
推荐指数
2
解决办法
8876
查看次数

Scala,检查Actor是否已退出

在Scala 2.8中,当我开始演员时,我可以通过消息传递进行通信.这反过来意味着我可以发送最终的Exit()消息或我认为适合我的协议的任何内容.

但是我如何检查演员是否退出?我可以很容易地想象自己有一个任务,其中一个主演员开始一些工人演员,然后只是等待答案,每次检查这是否是最终的答案(即任何演员仍在工作或他们都退出?).

当然,我可以让他们都发回"我已经完成"的消息,然后计算它们,但这在某种程度上是令人不满意的.

在测试工人演员的完成时,最佳做法是什么?

编辑#1

嘿伙计们,我正在考虑期货,但遇到了麻烦.有人可以解释为什么这段代码不起作用:

package test
import scala.actors.Futures._

object FibFut extends Application{

    def fib(i:Int):Int = 
        if(i<2)
            1
        else
            fib(i-1)+fib(i-2)

    val f = future{ fib(3) }

    println(f())    

}
Run Code Online (Sandbox Code Playgroud)

如果我在future-body中定义函数fib,它就可以工作.它必须是范围的东西,但我没有上面的任何错误,它只是挂起.任何人?

编辑#2

似乎扩展应用程序并不是一个好方法.定义主要方法使一切正常.以下代码是我正在寻找的,所以Futures得到了大拇指:)

package test

import scala.actors.Futures._

object FibFut {

  def fib(i: Int): Int = if (i < 2) 1 else fib(i - 1) + fib(i - 2)

  def main(args: Array[String]) {

    val fibs = for (i <- 0 to 50) yield future { fib(i) }

    for (future …
Run Code Online (Sandbox Code Playgroud)

scala exit worker-thread scala-2.8 actor

5
推荐指数
1
解决办法
2909
查看次数