我有可以在散文描述如下高性能的环境问题:Java资源池线程问题
我有一个外部的Java API,它使一个FPGA卡,上面有64对资源的调用。我需要一种机制来安全地在应用程序中的数百个线程之间共享这些资源的子集。每个资源应被视为不是线程安全的。
所以我需要一个ResourcePool和方法update(),然后调用resource.update()。
我认为这是一个相当常见的习惯用语,但我很难将自己的头脑融入到Java概念中。我想说在一个ResourcePool中有4个资源。我应该猜测每个人都应该活在自己的Thread中(因此需要一个线程池)。
我将如何实现这一点,以便我可以记录一个错误,并继续进行时,所有4资源都在使用?
希望这是有道理的!
所以'update'方法只是从池中选取任何资源并更新它?你为什么认为每个资源都需要它自己的线程? –
@MarkoTopolnik资源是硬件相关的,不能被认为是线程安全的,但我需要说100个线程与这些资源中的4个进行通信。通常,这些资源在系统中为每个线程分配1个资源。然而,我们把这个插入的Java应用程序有数百个线程。 – easytiger
因此,您需要一个由四个对象组成的池,每个对象都绑定到其线程和其硬件资源。就客户而言,资源与线程相关并不重要;只是它们是一些可以在任何时候只通过一个线程获取的资源。这与您的资源是TCP连接完全相同。 –