如何将用户数据传递给线程?

时间:2016-07-20 10:26:09

标签: java database oracle-adf java-threads

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

你可以使用带有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方法中可以访问它

答案 2 :(得分:0)

您可以使用ThreadLocal维护与当前线程相关的一些上下文,您可以获得有关Usage of ThreadLoacal

的更多信息