【问题标题】:Is it possible to communicate between multiple threads from multiple instances of the same program?是否可以在来自同一程序的多个实例的多个线程之间进行通信?
【发布时间】:2014-08-09 07:34:37
【问题描述】:

我正在制作一个桌面 java 程序,来自不同计算机的多个人将同时访问它,因为它位于共享驱动器上。该程序将用户输入写入excel文件,所以我想知道同一程序的不同实例是否可以做到这一点,还是每次有人打开程序时我都必须创建另一个线程? 我不知道如何使用线程。

【问题讨论】:

  • 每个用户将在那里运行自己的进程,本地到他们自己的机器上下文。多线程不会发挥作用,但如果他们试图更新同一个文件,那么你就会遇到问题,因为两个人可能会同时写入内容,从而在数据中造成损坏......这就是为什么我们有数据库服务器...
  • @DavidPostill FileLock 依赖于操作系统,我有一些使用案例,它在网络驱动器上失败......只是说;)
  • @MadProgrammer 很高兴知道,您是否在任何地方记录了失败的用例?
  • 请注意,每个用户都将在他们自己的机器上运行他们自己的 java 进程——因此将运行多个线程,但它们将在不同的 JVM 上运行。术语“多线程”通常是指在同一个 JVM 上运行的多个线程。

标签: java multithreading swing multiple-instances


【解决方案1】:

是的,可以这样做。如果它们都写入共享驱动器上的同一个 Excel 文件,您将必须对文件实施某种形式的锁定,以便文件不会被同时写入的多个应用程序实例损坏。如果他们使用该应用程序在自己的计算机上编写新的 Excel 文件,而共享驱动器只是用作他们可以从中找到您的应用程序的应用程序服务器,那么您甚至不必这样做。

在这种情况下,您不必担心线程,因为应用程序的每个实例都可以是单线程的。这是多处理而不是多线程的情况。

【讨论】:

  • 我只是想到了别的东西。我原本计划让它们都写入共享驱动器中的一个 excel 文件,但现在,我想我可以让每个应用程序在共享驱动器中创建一个新的文本文件,然后我会运行另一个程序,它会得到每个文件中的文本,然后将它们添加到 excel 文件中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-13
  • 2014-02-13
  • 2011-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-17
相关资源
最近更新 更多