У меня есть класс, который реализует Runnable
, и в настоящее время я использую Executor в качестве пула потоков для выполнения задач (индексация документов в Lucene).
executor.execute(new LuceneDocIndexer(doc, writer));
Моя проблема в том, что мой класс Runnable создает много объектов Lucene Field
, и я предпочел бы повторно использовать их, а затем создавать новые при каждом вызове. Каков наилучший способ повторного использования этих объектов (объекты Field
не являются поточно-ориентированными, поэтому я не могу просто сделать их статическими) - мне следует создать свой собственный ThreadFactory
? Я заметил, что через некоторое время программа начинает резко ухудшаться, и единственное, о чем я могу думать, - это накладные расходы GC. В настоящее время я пытаюсь профилировать проект, чтобы убедиться, что это даже проблема, но сейчас давайте просто предположим, что это так.