Java 多线程概念

标签 java multithreading

在我的代码中,这个 setMultiLegNetQuote() 方法在一个线程中,然后如果您看到突出显示的 block ,它正在调用另一个线程..

我的问题是..

(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 我的意思是从第一个线程调用第二个线程。这样调用线程时是否调用了第二个线程的run方法?

dataBufferThread.setNetQuoteList(netQuoteList) ??????????

然后这个 dataBufferThread.setCnt(20000); 在线程的情况下做什么?这是一个以这种方式声明的 AtomicInteger AtomicInteger cnt = new AtomicInteger(0)

这里实际上这个 dataBufferThread 和 Thread 都是独立的线程,run 方法扩展了 Thread...

这就是我问是否为线程创建一个对象并访问它的某些方法的原因...是否调用了线程的运行方法?

最佳答案

我不会使用您也将其描述为 Thread 的对象,因为这更有可能造成混淆而不是有用。

Thread 上调用它的唯一方法是 start() 从那时起它独立运行。

  1. 这会调用 Thread 对象上的一个方法。这对该线程没有任何作用,甚至不需要运行。

    return t.setQuote(mmsg.getMessageBody());
    
  2. 您所做的只是设置两个值,仅此而已。涉及一个线程也只是令人困惑的恕我直言。

关于Java 多线程概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12349963/

相关文章:

java - Spring Security bean未找到异常

ios - 魔法记录在后台保存

multithreading - 登录多线程Java

android - 如何实现更灵活的AsyncTask?

java - 如何使用多线程并行运行两个类?

java - 当变量值改变时如何更新JTable和JTree?

java - 在java中复制对象

java - 如何在java中单击图像打开特定链接?

java - jsch sftp - 更改到父目录

java - 修改 Arraylist 的元素并将其添加到 ArrayList 的另一个 ArrayList