「目標」値はどのように取得/設定できますか?どうすれば私のスレッドからサードパーティのAPIスレッドに値を渡し、サードパーティのスレッドからJavaの静的変数に値を変更するのですか?
- 他のクラスやスレッドからも使用できますか?私はこれを試しましたが、私には "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");
}
});
}
}
注:私は今、別途イベント>抽象インタフェースとして新しいスレッドを発射し、しようとしていますが>スレッドとしてそのインターフェイスを実装し、そのスレッドから変数への割り当てメインクラス静的変数。そして、仮想スレッドでリッスンします。したがって、合計で私は持っている可能性があります: メイン>スレッド1> ThirdpartyThred>抽象インターフェイス>スレッド2>メインput/get
コールバックメソッドを呼び出す問題は、あなたがその現在の値を表示したくないということです、あなたはそれが設定されるまで待機します。この最も簡単な解決策は、これを行うことではなく、値が設定された後に実行したいコードを、値が設定されているコードの後ろに、他にはどこにも置かないようにすることです。これは、イベント駆動コールバックのためのものです。 –
以下のような完全な方法でコールバックインターフェイスを定義します。 http://stackoverflow.com/questions/826212/java-executors-how-to-be-notified-without-blocking-when-a-task-completes – sfk