Should I implement the consumer/producer pattern in my java video app, and if yes, how?
我用桌面Java 8构建了一个小型视频帧分析应用程序。在每个帧上,我都提取数据(现在增加了5倍,但将来可能会扩展为1920x1080x3 OpenCV
如果我写数据库并在单个线程上运行应用程序,我会担心硬盘访问时间,而对我来说最好的解决方案是用多线程实现生产者/消费者模式。我发现所有示例都实现了3个线程:
与2线程实现相比,这样做有优势吗?
这是使用数据库处理实时数据的正确方法吗?
使用固定数量的线程是有限的。我的PC有(仅)8个内核,您的密集型声音应用程序不会使用其中的一半,实际上可能只有消费者是密集型内核,因此可能是12.5%。您必须每个线程都有几个线程才能充分利用CPU,然后您将花费很多精力来管理线程。
替代方法是使用各种现有系统之一在后台执行工作。例如,使用
或者如果您使用的是Swing,则
您的问题颇具概念性,所以我认为它属于这里:程序员
不过,根据我的经验,您可以将生产者与主生产者分开,因为如果生产者出了问题,您的主控件可能会冻结。诸如冻结表格,不响应控件等之类的结果都可能是结果。使您的系统有机会通过命令重新建立。