首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >实例如何与实例器进行通信?

实例如何与实例器进行通信?
EN

Stack Overflow用户
提问于 2012-06-26 18:55:35
回答 4查看 341关注 0票数 0

给出了一个非常简化的例子:

代码语言:javascript
运行
复制
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通信吗?通过通信,我的意思是B向A发送值,而不调用B上的方法。

编辑:谢谢您的回复。以下是我的跟进问题:

如果我有以下情况,并且由两个B实例同时调用method signal(),这将导致每一个B调用操作发生两次冲突。我能做什么来解决这个问题?

代码语言:javascript
运行
复制
//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();
            }

   }
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-06-26 18:58:58

让他们都可以访问同一个Queue。一种是将元素放在上面,另一种则是从上面提取元素。如果它们位于单独的线程中,那么其中一个BlockingQueue实现就应该能做到这一点。

票数 3
EN

Stack Overflow用户

发布于 2012-06-26 18:58:49

您必须将this传递给B的构造函数:

代码语言:javascript
运行
复制
public class A {
    private B b;

    public A() {
        b = new B(this);
    }
}

public class B {
    A creator;

    public B(A creator) {
        this.creator = creator;
    }
}

诚然,让this在构造函数中“逃脱”通常不是一个好主意,但通常它比其他选项更干净。

票数 4
EN

Stack Overflow用户

发布于 2012-06-26 18:59:17

//独角兽和什么-不是

如果A在构造函数中将自身的实例传递给B,则需要不需要臭独角兽

代码语言:javascript
运行
复制
class B {
    A instantiator;
    public B(A inst) { instantiator = inst; }
}


class A {
    B b = new B(this);
}

编辑(回答后续问题)

如果希望确保signal的多次调用不会同时修改A的状态,则应该使用synchronized关键字保护其关键部分。如果整个方法表示一个关键部分,则可以将synchronized添加到方法的声明中,如下所示:

代码语言:javascript
运行
复制
public synchronized void signal() {
    //for loop
    b[i].action();
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11214152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档