set*_*hro 1 java parallel-processing multithreading task threadpool
是否有一种很好的方法来实现一个执行策略,该策略可以根据某种识别方案确定哪个线程将处理给定的任务?或者这甚至是一个好方法?
我需要处理 1-many 文件,我将在交错块中接收这些文件。当块到达时,我想完成处理该块的任务。问题是我没有让处理代码成为线程安全的奢侈,所以一旦池中的线程处理了文件中的一个块,我需要同一个线程来处理该文件的其余部分。我不在乎一个线程是否正在同时处理多个文件,但我不能同时处理同一个文件的池中的多个线程。
《Java 并发实践》一书指出,您可以使用执行策略来确定“任务将在哪个线程中执行?”,但我不明白如何执行。
谢谢
好吧,您可以自己编写ThreadPoolExecutor- 但通常没有办法做到这一点。线程池的全部意义在于您只需将工作扔给它,而无需关心哪个线程获得哪个任务。在这种情况下,听起来您需要自己管理线程,保留哪个线程正在处理哪个文件的映射。
您知道文件何时完成吗?如果没有,您可能会在不断增长的地图上遇到问题......