Java多线程概念
在我的代码中,这个setMultiLegNetQuote()方法位于一个线程中,如果看到突出显示的块,它将调用另一个线程 我的问题是 (1) 第一个线程被调用,如下所示Java多线程概念,java,multithreading,Java,Multithreading,在我的代码中,这个setMultiLegNetQuote()方法位于一个线程中,如果看到突出显示的块,它将调用另一个线程 我的问题是 (1) 第一个线程被调用,如下所示 Thread t = custStreamerMap.get(mmsg.getCustomerId()); if (null != t) { return t.setQuote(mmsg.getMessageBody()); } 在这种情况下,线程运行方法是否在我们创建thred对象时被
Thread t = custStreamerMap.get(mmsg.getCustomerId());
if (null != t) {
return t.setQuote(mmsg.getMessageBody());
}
在这种情况下,线程运行方法是否在我们创建thred对象时被调用,但我们
直接调用t.setQuote(mmsg.getMessageBody())
(2) 然后dataBufferThread,我的意思是从第一个线程调用第二个线程。这样调用线程时是否调用第二个线程的run方法
dataBufferThread.setNetQuoteList(netQuoteList) ??????????
然后这个dataBufferThread.setCnt(20000)代码>在线程的情况下做什么?这是以这种方式声明的AtomicIntegerAtomicInteger cnt=new AtomicInteger(0)
这里实际上这个dataBufferThread和Thread都是独立的线程,运行方法扩展了Thread
这就是我问我们是否为thread创建一个对象并访问它的某个方法的原因……是否调用了thread的run方法?我不会使用一个您也描述为thread的对象,因为这更容易混淆而不是有用
线程
上唯一调用它的方法是start()
,从该点开始,它独立运行
这将调用线程
对象上的方法。这对该线程没有任何作用,它甚至不必运行
return t.setQuote(mmsg.getMessageBody());
您所做的只是设置两个值,仅此而已。同样涉及到一个线程只是让IMHO感到困惑
好的,然后正如您所说的,第二个线程被调用为相同的…dataBufferThread.setNetQuoteList(netQuoteList);它甚至不需要运行。那么在这种情况下,这个方法做什么呢;线程永远不会被调用。第二种情况,setCnt(20000)
所做的只是setCnt()方法在其代码中所做的事情。很可能是this.cnt=20000代码>,仅此而已。
return t.setQuote(mmsg.getMessageBody());