非常に単純化された例を考えると:
Class A {
B b = new B();
}
Class B {
//unicorns and what-not
//Something happens and I want to let A know
//Yet I don't want to return and exit
}
B がソケットなしで A と通信できる方法はありますか? 通信とは、A が B のメソッドを呼び出すことなく、B が A に値を送信することを意味します。
編集:ご回答ありがとうございます。これは私のフォローアップの質問です:
次のような場合、メソッド signal() が B の 2 つのインスタンスによって同時に呼び出されると、すべての B 呼び出しアクションの競合が 2 回発生します。解決するにはどうすればよいですか?
//Modified from Jon Skeet
public class A {
private B b[];
public A() {
//for loop
b[i] = new B(this);
}
public void signal() {
//for loop
b[i].action();
}
}
public class B {
A creator;
public B(A creator) {
this.creator = creator;
}
public void action() {
//stuff
}
public void main(String[] args) {
while(true)
if(something==true) {
creator.signal();
}
}
}