Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java多线程概念_Java_Multithreading - Fatal编程技术网

Java多线程概念

Java多线程概念,java,multithreading,Java,Multithreading,在我的代码中,这个setMultiLegNetQuote()方法位于一个线程中,如果看到突出显示的块,它将调用另一个线程 我的问题是 (1) 第一个线程被调用,如下所示 Thread t = custStreamerMap.get(mmsg.getCustomerId()); if (null != t) { return t.setQuote(mmsg.getMessageBody()); } 在这种情况下,线程运行方法是否在我们创建thred对象时被

在我的代码中,这个setMultiLegNetQuote()方法位于一个线程中,如果看到突出显示的块,它将调用另一个线程

我的问题是

(1) 第一个线程被调用,如下所示

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)在线程的情况下做什么?这是以这种方式声明的AtomicInteger
AtomicInteger 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());