Я работаю с потоками как неоперившийся. Поэтому мне нужна помощь.Поддержание одного синхронизированного списка массивов между несколькими потоками в java
Для определенной работы мне нужен один массив-список, значение которого будет разделяться всеми потоками. Я хочу что-то вроде этого, класс main() предоставит список массивов потокам во время создания потока. Темы будут добавлять значения в список массивов, а изменение, сделанное потоком, будет отражено в каждой копии этого списка массивов, и это важно сделать синхронно.
Например, класс main() дал двум потокам массив-список. Затем первая нить добавила значение в слот 1 массива, второй поток, когда добавление увидит изменение, и когда оно будет добавлено, оно добавит во вторую позицию. Когда main предоставит список массивов в новый поток, все эти изменения, сделанные ранее, будут легко включены, и он начнет добавлять с третьей или более поздней позиции. Другое дело, только один поток может внести изменения за раз или он должен быть синхронизирован.
Как я могу это сделать в java? Может кто-нибудь мне помочь?
Передайте тот же список всем темам и убедитесь, что каждый доступ синхронизирован. Или лучше, инкапсулируйте список в класс, который делегирует список, и обеспечивает синхронизацию, и передайте экземпляр этого класса ко всем потокам. Начните кодирование и вернитесь с тем, что вы пробовали, если столкнулись с конкретной проблемой. Опубликуйте описание конкретной проблемы и код. –
Обратите внимание, что вам нужно убедиться, что один поток может выполняться одним потоком без «прерывания» потоков: 1. Найдите следующий свободный индекс. 2. Задайте значение по этому индексу. Синхронизация - один из способов достижения этого. –
Я инкапсулировал список в класс и передал его вызывающим потокам. Оно работает. Для синхронизации я использовал класс singelton с синхронным доступом к методам. Thanx @JBNizet – Mahin