У меня есть один класс чтения, который считывает данные из общего списка.
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
}
}
Теперь, как синхронизировать несколько операций чтения / записи?Я хочу, чтобы одновременно только один поток мог записывать данные, но несколько потоков должны иметь возможность читать данные списка.