检测我们在哪个过程中?

时间:2012-03-30 19:14:54

标签: java multithreading process

如果有人可以帮助我思考解决方案,我会有一个有趣的问题。 我产生了两个独立的进程,A和B.将它们视为等待工作的队列

  1. A正在填补并做一些事情
  2. A完成并传递到B
  3. B做点什么并完成
  4. 如何检测我们在使用Java的过程中的位置?我将如何阻止这个过程?

    谢谢!

3 个答案:

答案 0 :(得分:1)

在纯Java中,您将拥有两个线程都可以访问的内存变量,因此它们可以进行通信。您需要使它们同步或使用信号量以确保一次只有一个线程正在修改变量中的信息。

其他语言具有actors的概念,它通过传递消息来实现更强大的线程间通信。查看Scala - 它建立在Java之上。或者是akka库,它有Scala和Java版本。

如果您想考虑这些内容,请尝试由实用程序员编写 Seven Languages in Seven Weeks 一书。

答案 1 :(得分:0)

您可以在代码中的不同位置添加currentStage变量和更新阶段。还保存“寄存器”。我的意思是保存你关心的局部变量。序列化对象,并可能将它们放在数据库中。

然后,如果退出并重新启动,则转到上次保存的阶段并从数据库中恢复相应的对象。

答案 2 :(得分:0)

要遵循这个过程,您需要另一个可以读取A& A输出的状态信息的线程(C)。 B和A可以提出这个问题。 B,如果他们应该继续。

例如,使用2种方法创建ProcessFollower接口:

  1. void updateStatus(String)
  2. boolean shouldStop()
  3. C可以实现此接口并在调用A时传递自身,A将ProcessFollower(C)的引用传递给B.每次状态更改A和B时调用updateStatus并且每次(例如,每次循环迭代)他们检查shouldStop();如果错,他们只是返回或等等。