【问题标题】:How to pass user data to a thread?如何将用户数据传递给线程?
【发布时间】:2016-11-23 12:58:41
【问题描述】:

我不确定我是否走在正确的轨道上。在我的应用程序中,创建了 jdbc 连接,并通过该事务提交了一些进程调用。在同一个流程中,创建一个线程并再次调用同一个进程来执行提交。但是后来的提交没有在 WHO 列中提交正确的用户数据。 WHO 列需要从用户会话中获取其值。我已经检查过,如果我不创建线程并直接调用该过程,那么 WHO 列正在正确更新。在创建线程时,出现问题。应用程序是使用 adf 模型创建的。请建议如何将用户上下文传递给线程。

【问题讨论】:

    标签: java database oracle-adf java-threads


    【解决方案1】:

    除非您发布代码,否则很难回答您的问题。但根据你的措辞,我认为你很难将一些变量/数据传递给线程。最简单最简单的方法是使用构造函数。当您创建一个对象来调用实现/扩展线程类的类时,将数据作为参数传递。然后在被调用的类中使用构造函数来获取值并根据需要使用它们。我希望这会有所帮助,并且符合您提出的问题。

    【讨论】:

      【解决方案2】:

      您可以使用具有 getter 和 setter 方法的类将数据传递给线程,通过在启动线程之前创建对象来设置所有数据,并使用 getter 方法可以在线程中获取它..!

       public Class  NormalClass
      { 
           int data = 0;
           public void setData(int a)
         {
             this.a = a;
          }
          public int getData(int a)
         {
           return this.a;
         }    
      }
      

      在类中启动线程集数据之前,在run方法中可以访问它

      【讨论】:

        【解决方案3】:

        你可以使用ThreadLocal来维护一些与当前线程相关的上下文,你可以在Usage of ThreadLoacal获取更多信息

        【讨论】:

          猜你喜欢
          • 2012-07-24
          • 1970-01-01
          • 2010-10-26
          • 2012-12-14
          • 2015-06-08
          • 2011-02-18
          • 2021-06-30
          • 2011-09-04
          相关资源
          最近更新 更多