【发布时间】:2011-09-12 09:01:12
【问题描述】:
如何获取/设置“目标”值?
- 这样我也可以从其他类或线程中使用它吗?我试过了,但它总是给 null 或什么都不给,而不是向我展示“5”个目标。
Main.java:
public class Main
{
public static String goal = null;
public static void main(String[] args)
{
System.out.println(goal); // shows: null
MyFunction1();
System.out.println(goal); // How many goals happend till now?
}
public static void MyFunction1()
{
new Thread(new Runnable()
{
public void run()
{
CallMe();
System.out.println("show me: " + goal); // shows nothing.
}
}).start();
}
public static void CallMe()
{
ThirdpartySoftware.Bla().connect(new Bla.STATE()
{
public void stateChanged()
{
System.out.println("Am i running? yes");
goal = "5";
System.out.println("Did i assigned new value to goal? yes");
}
});
}
}
注意:我现在分别尝试触发一个事件 > 新线程作为抽象接口 > 将该接口实现为一个线程,并从该线程将变量分配给主类静态变量。然后监听一个虚拟线程。所以总的来说我可能有: Main > Thread1 > ThirdpartyThred > Abstract interface > Thread2 > Main put/get
【问题讨论】:
-
问题是你不想看到它的当前值,你想等到它被设置。这个最简单的解决方案是不这样做,并且在设置值之后让您想要运行的代码位于设置值的代码之后而不是其他任何地方。这就是事件驱动回调的用途。
-
定义一个回调接口,完整方法如下stackoverflow.com/questions/826212/…
标签: java multithreading oop