0

次のプログラムを実行しています。メインスレッドは正常に実行および終了しますが、pool-1-thread-1というスレッドが原因でプログラムは実行を継続しますが、このスレッドは終了しません。誰かがコードの何が問題なのかを提案できますか?構成ファイルはすべて、Solrの標準ディストリビューションで提供されているとおりです。

package solrapp;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.core.CoreContainer;

public class SolrApp {

    public static void main(String[] args) throws Exception {
        CoreContainer coreContainer = new CoreContainer.Initializer().initialize();
        SolrServer server = new EmbeddedSolrServer(coreContainer, null);
        SolrQuery query = new SolrQuery("*:*");
        QueryResponse response = server.query(query);
        SolrDocumentList results = response.getResults();
        System.out.println(results);
    }
}
4

1 に答える 1

1

クラスには。CoreContainerというメソッドがあるようshutdownです。

自分で試したことはありませんが、結果を出力した後に次の行を追加すると、すべてのスレッドが停止するはずです。

coreContainer.shutdown();

私の推測では、CoreContainerはクエリを受け入れるためにスレッドプールを起動しているので、JVM上のすべてのスレッドが正常にシャットダウンできるように、プールを起動したオブジェクトにそれらのスレッドを停止するように指示する必要があります。

于 2011-02-03T13:57:11.330 に答える