Класс Java, позволяющий читать или изменять одновременно несколько потоков

Допустим, у вас есть следующий класс:

class A {
    private Foo foo = new Foo();
    Foo getFoo() {
        return foo; //foo.clone()?
    }
    void modifyFoo() {
        //modify this.foo
        //...
    }
}

Я хочу разрешить:

  • либо несколько потоков для вызова getFoo ()
  • или один поток для вызова modifyFoo () ,
  • , когда поток хочет изменить foo, никакие другие новые вызовы getFoo () , поступающие после этого, не могут быть выполнены, пока не будет выполнено изменение. сделано.

Существуют ли уже классы для этой проблемы в Java или мне нужно реализовать ее? Если мне нужно реализовать это, то как я могу реализовать это, чтобы обеспечить безопасность потоков?

8
задан SolidSun 22 November 2011 в 16:33
поделиться