当前位置: 首页 > 面试题库 >

Java进程间互斥

华心思
2023-03-14
问题内容

我需要在Java中实现某种进程间互斥。我正在考虑按照此[线程的](http://codingdict.com/questions/1808建议使用FileLock API
。我基本上将使用一个虚拟文件并将其锁定在每个进程中。

这是最好的方法吗?还是这样的东西内置在标准API中(我找不到)。

有关更多详细信息,请参见以下内容:

我编写了一个应用程序,该应用程序可以读取一些输入文件,并根据它们在其中找到的内容来更新一些数据库表(这比较复杂,但此处的业务逻辑无关紧要)。

我需要确保多个数据库更新之间的互斥。我尝试使用LOCK TABLE实现此功能,但是我所使用的引擎不支持此功能。因此,我想在应用程序代码中实现锁定支持。


问题答案:

我采用了FileLock API方法,并基于以下内容实现了一个简单的互斥量:

  • FileChannel.lock
  • FileLock.release

所有进程都使用相同的虚拟文件来获取锁。



 类似资料:
  • 问题内容: 我想使用互斥锁,该互斥锁将用于同步访问内存共享黑白中两个不同进程中的某些变量。我该如何实现。执行该代码示例将不胜感激。 问题答案: 而是 使用初始化为的POSIX信号量 。 (请参见下文)用于未命名的信号灯或已命名的信号灯。 最初发布此答案很多年后,必须对其进行更新。 实际上应该使用互斥对象而不是信号量 。R和kuga的评论(如下逐字复制)解释了原因。特别是,我发现kuga提到互斥锁只

  • 问题内容: 我遇到需要将命令发送到正在运行的Java应用程序的情况,现在我正在使用tcp / ip套接字使用Internet Explorer上下文菜单项将命令发送到应用程序。但是,一旦应用程序启动,病毒扫描程序就会抱怨该应用程序开始监听,尽管我只是在监听本地连接。我认为这可能会使用户感到困惑。我正在寻找其他方式而又不会惹恼影音扫描器吗? 问题答案: 为此,最好不要使用基于文件的FIFO队列。或使

  • 我写了一个简单的互斥信号量程序,在两个终端中打开,在没有主动释放信号量的同时,当一个进程结束为什么另一个进程没有被阻塞而是拿到了信号量?进程结束会主动释放信号量吗(程序里没有释放信号量的操作)?希望有大佬帮忙解答一下,为什么两个进程都正常运行了,谢谢!

  • 问题内容: Java上下文中的线程和进程之间有什么区别?用Java如何实现进程间通信和线程间通信?请给我指出一些现实生活中的例子。 问题答案: 根本的区别是线程位于相同的地址空间中,而进程位于不同的地址空间中。这意味着线程间通信是关于传递对对象的引用以及更改共享对象,而进程是关于传递对象的序列化副本。 在实践中,Java线程间通信可以实现为对共享对象进行简单的Java方法调用,并引入适当的同步。或

  • 问题内容: 我正在编写一个J2ME应用程序。其中一项功能是定期轮询目录的内容,如果有任何新内容,请将其绘制在屏幕上。我通过让UI表单启动一个带有指向自身的指针的轮询线程来完成此操作,并且当轮询线程找到某些内容时,它将回调该表单并调用syncrhonized方法来更新其显示。这似乎很好。 我的问题是这个。在C#/。NET中,我知道让非UI线程更新UI并不是一件好事,而处理此问题的正确方法是将其委派给

  • 问题内容: 我正在用Go编写负载平衡的服务器系统。 负载平衡服务器将与多个应用程序服务器通信并处理请求。这些服务器都可以在同一台计算机或网络上运行。 我已经找到了网络,但是现在我需要找到一种最佳的方式来使负载均衡器与本地应用程序服务器进行通信。使用-networking似乎并非最佳选择。 我正在尝试通过和系统调用共享内存,但是没有找到任何有效的示例,并且该软件包也完全没有文档说明。 有人可以为我提