如何允许线程在彼此之间修改/获取信息?

时间:2014-05-03 12:37:52

标签: java multithreading events handlers

我的问题更多是关于编程模式而不是特定情况。

我想知道如何在同意线程之间管理更好的互动。

说我有这个例子:

Class Ocean implements Runnable {
   Boat myBoat;

   // standard stuff

   @Override
   public void run(){
      // the boat navigates through the sees…
   }
}

以下是一个不同的主题,因为它必须同时运行:

Class Radar implements Runnable {

    // standard stuff

    public int scanOcean(){
        // return boat.position();
    }
}

这两个类都是我的Main方法的对象。

现在问题是:我如何访问另一个线程内的方法?我抬头看了看,但我找不到任何一致和实际的答案......

某些网站引用了另一个线程可能使用的字段的volatile声明,一些告诉事件监听器,另一些关于事件处理程序......我应该使用标准Observer / Subject模式吗?

谢谢!

银鸭

1 个答案:

答案 0 :(得分:0)

我使用中间帮助器对象获得了很好的体验,只保存了要共享的数据,如线程之间共享的状态信息,中止标志等。这不适合所有情况,但它经常适合我。

帮助程序实例应根据需要在其方法,getter和setter中实现(并封装)锁定,因此您不必在外部处理它。

一致,线程安全,易于使用。