如何在java中的不同包之间进行通信?

时间:2015-12-15 07:01:03

标签: java multithreading spring

我有一个包含2个Package1ClassAPackage1ClassB类的包。我有另一个包含Package2ClassC类的包。

Package1ClassA是一个原型bean,扩展了runnable,有一个布尔变量stop和一个run方法。此run方法调用单例类Package2ClassC中的方法。

Package1ClassB在一个请求中启动线程Package1ClassA。与Package1ClassB不同的帖子会更改stop的值。

我需要的是将stop的状态更改传达给Package2ClassC

我无法创建一个对象,因此停止的getter将无效。 我试图让stop变得不稳定,但它没有用,我想我已经将stop作为参数传递给Package1ClassAPackage2ClassC的函数。

我应该怎么解决这个问题?

1 个答案:

答案 0 :(得分:1)

您必须使用函数来更改布尔变量stop的值。 在相同的函数/方法中创建Package2ClassC对象。 Package2ClassC也应该有一个boolean类型的实例变量(eg.start)。分配' stop'的更改值或新值。变量变量' start'在Package2ClassC。

例如:

function()
{
     stop=true; //changed value
    Package2ClassC ob=new Package2ClassC ();
    ob.start=stop; 
    }

如果您不想创建对象。请使用变量' start'在Package2ClassC static.Then更改将应用​​为:

function()
    {
         stop=true; //changed value
       /* Package2ClassC ob=new Package2ClassC (); not required for static variables*/
          Package2ClassC.start=stop; 
    {

如果变量'开始'是静态的,你不需要创建一个对象来使用它。我的意思是,你不能使用一个对象来使用它。

更好的解决方案是将变量设置为static。这是因为静态变量的值对于类中的所有对象都是通用的。只有一个副本。

如果您选择第一个选项,即创建一个对象(使用非静态变量' start'),则必须使用同一个对象将Package2ClassC中的其他方法/函数调用为跟上' start'的价值。已经改变了。这是因为,如果变量不是静态的,那么创建的每个新对象都将获得该特定变量的初始值(在声明期间分配给它的值)。

所以静态要好得多。