自分で書いたコードに対する反省
3300 ワード
詳細
コードレビュー
この文章を書いた理由は、昨日、仕事中に業務を終えたときに、組長の要望に応じて自分のコードを書いた結果、その後組長レビューをしていたときに、不足点を発見したので、このブログを書いて記録しました.
あまり話さないで、まず元のコードをつけます.
コードレビュー
この文章を書いた理由は、昨日、仕事中に業務を終えたときに、組長の要望に応じて自分のコードを書いた結果、その後組長レビューをしていたときに、不足点を発見したので、このブログを書いて記録しました.
あまり話さないで、まず元のコードをつけます.
public class DocValuesWarmUpListener extends AbstractSolrEventListener{
private static final Logger logger = LoggerFactory.getLogger(DocValuesWarmUpListener.class);
private List fields;
public DocValuesWarmUpListener(SolrCore core) {
super(core);
}
@Override
public void init(NamedList args) {
super.init(args);
fields = new ArrayList<>();
NamedList o;
if(args != null) {
o = (NamedList) args.get("fields");
if(o!=null && o instanceof NamedList) {
for (int i = 0; i < o.size(); i++) {
fields.add((String) o.getVal(i));
}
}
}
}
@Override
public void newSearcher(SolrIndexSearcher newSearcher, SolrIndexSearcher currentSearcher) {
long start = System.currentTimeMillis();
ExecutorService executorService = Executors.newFixedThreadPool(fields.size());
try {
// ,
for(int i=0;i
。
, , 6000ms, 400ms 。 , solr softCommit , docValue merge, 。 softComiit docValue 。
, 。 , eventListener, init() solrconfig.xml , newSearcher() docValue 。
, review , , , 。
1: , , docValue , 。 , , , thread.join(), , countDownLatch。 countDownLatch join 。
countDownLatch join , , , 。 , 。
join , , countDownLatch , 。
, A,B,C , 100 A B,C , join countDownLatch 。 ,A B,C 50 , , join , countDownLatch ,
CountDownLatch cdl = new CountDownLatch(2)
//A
cld.await()
//B 50
cld.countDown()
//C 50
cld.countDown()
のコードは を することができて、 は のコードで、 にプログラミングする cld.contDown()をfinallyの に くことに して、1つのスレッドが してデッドロックをもたらすことを けます.
2つ の は、コードの の にあり、 1 のコードはコードパラメータを く きすぎて、 のコードに されにくく、 のヒントを て、AbstractSolrEventListenerソースコードの み りにinit があり、schema.xmlファイルの パラメータの み りを し、この を として き えることができることを した. な fieldをxmlファイルに します.
は に の を する.