Как добиться синхронизации? - PullRequest
2 голосов
/ 22 июня 2019

У меня есть один класс чтения, который считывает данные из общего списка.

public class Reader {

private List<String> list;
public ListReader(List<String> list) {
    this.list = list;
    }  

public void read() {
    //reading logic
    }    
}

У меня есть еще один класс, который выполняет запись данных в список.

public class  Writer< {

   private List<String> list;       

   public ListWriter(List<String> list) {
         this.list = list;
   }  

   public void writeNextValue(String val) {
       // writing logic 
   }         
}

У меня есть еще один класс, который создает экземпляр класса Reader и Writer с одним и тем же объектом List.

public class Demo {
    public static void main (String ... args){
        List<String> myList= new ArrayList<>();

         Reader reader= new Reader(mylist);
         Writer writer =  new Writer (mylist);

        // multiple reads and write statements using different threads   

      }
    }

Теперь, как синхронизировать несколько операций чтения / записи?Я хочу, чтобы одновременно только один поток мог записывать данные, но несколько потоков должны иметь возможность читать данные списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...