我有固定数量n
的相同资源需要在n
或多个线程之间共享。每当一个线程需要使用一个资源时,它可以获取任何可用的资源,为此它运行一个不确定的时间量(即使用时间不统一)然后释放它。
管理这种场景的好的 Java 数据结构是什么?我只能想到一种方法,即分别使用 aLinkedBlockingQueue
和take
andput
操作作为锁定和释放资源。我只是想要并发专家的建议:
对于那些好奇的人:需要共享的资源是用于计算多元正态 CDF 和矩的不可重入 FORTRAN 库的相同副本。壮观的数值库,但写在一个线程安全代码不值得担心的时代。在这种情况下,我们制作n
库的副本,其中n = Runtime.getRuntime().availableProcessors()
.
编辑:我不想创建线程的开销来执行这个库。它已经被多个线程调用;调用线程应该能够锁定资源并继续使用它。
更新:有关动机和实施,请参阅https://stackoverflow.com/a/19039878/586086。