ここで私のコードでは、この setMultiLegNetQuote() メソッドは 1 つのスレッドにあり、強調表示されたブロックが表示されている場合は、他のスレッドを呼び出しています..
私の質問は..
(1) この最初のスレッドは以下のように呼び出されます...
Thread t = custStreamerMap.get(mmsg.getCustomerId());
if (null != t) {
return t.setQuote(mmsg.getMessageBody());
}
この場合、thred オブジェクトを作成するのではなく、t.setQuote(mmsg.getMessageBody()); を直接呼び出すときにスレッド実行メソッドが呼び出されるかどうか。
synchronized int setQuote(String multiLegData) {
NetQuoteTuple netQuoteTuple = new NetQuoteTuple();
if (some checking) {
netQuoteTuple.setSide(1);
} else if (some checking) {
netQuoteTuple.setSide(2);
}
netQuoteList.add(netQuoteTuple);
**dataBufferThread.setNetQuoteList(netQuoteList);
dataBufferThread.setCnt(20000);**
return 1;
}
(2) 次に、dataBufferThread は、最初のスレッドから 2 番目のスレッドが呼び出されることを意味します。この方法でスレッドを呼び出すと、2 番目のスレッドの run メソッドが呼び出されるかどうか。
dataBufferThread.setNetQuoteList(netQuoteList) ??????????
そして、これdataBufferThread.setCnt(20000);
はスレッドの場合はどうなりますか? これは、このように宣言された AtomicInteger ですAtomicInteger cnt = new AtomicInteger(0)
ここで、実際には、この dataBufferThread と Thread は両方とも、Thread を拡張する run メソッドを持つ個別のスレッドです...
それが、スレッドのオブジェクトを作成し、そのメソッドにアクセスするかどうかを尋ねた理由です...スレッドの実行メソッドが呼び出されるかどうか?