powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Обьект чтения-записи для двух потоков
25 сообщений из 34, страница 1 из 2
Обьект чтения-записи для двух потоков
    #39787496
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Подскажите, есть ли в java обьект (вроде ByteBuffer или ByteChannel), к которому возможно получить доступ одновременно двум потокам: одному для записи, другому для чтения. Без блокировки самого обьекта ( как минимум, на неиспользуемых в текущий момент байтах).
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787511
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkoleg,


Все что связано с атомик

https://docs.oracle.com/javase/tutorial/essential/concurrency/atomicvars.html


https://docs.oracle.com/javase/8/docs/api/index.html?java/util/concurrent/atomic/package-summary.html
Package java.util.concurrent.atomic

AtomicBoolean
A boolean value that may be updated atomically.
AtomicInteger
An int value that may be updated atomically.
AtomicIntegerArray
An int array in which elements may be updated atomically.
AtomicIntegerFieldUpdater<T>
A reflection-based utility that enables atomic updates to designated volatile int fields of designated classes.
AtomicLong
A long value that may be updated atomically.
AtomicLongArray
A long array in which elements may be updated atomically.
AtomicLongFieldUpdater<T>
A reflection-based utility that enables atomic updates to designated volatile long fields of designated classes.
AtomicMarkableReference<V>
An AtomicMarkableReference maintains an object reference along with a mark bit, that can be updated atomically.
AtomicReference<V>
An object reference that may be updated atomically.
AtomicReferenceArray<E>
An array of object references in which elements may be updated atomically.
AtomicReferenceFieldUpdater<T,V>
A reflection-based utility that enables atomic updates to designated volatile reference fields of designated classes.
AtomicStampedReference<V>
An AtomicStampedReference maintains an object reference along with an integer "stamp", that can be updated atomically.
DoubleAccumulator
One or more variables that together maintain a running double value updated using a supplied function.
DoubleAdder
One or more variables that together maintain an initially zero double sum.
LongAccumulator
One or more variables that together maintain a running long value updated using a supplied function.
LongAdder
One or more variables that together maintain an initially zero long sum.
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787512
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще чаще всего народ юзает хешмеп для этих целей
https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentHashMap.html
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787518
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkoleg,
В java все объекты. От элементарного типа до космического корабля.
Стойкий к запросам большой объект получить труднее и он зовется thread safe.
Или вы о коллекции объектов?
Поэтому задачу нужно подробнее.
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787567
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
Нужно байты, по мере их поступления в текущий поток, передать читающему потоку.
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787580
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитай про Disruptor. Может подойдёт.
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787587
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegPetro123,
Нужно байты, по мере их поступления в текущий поток, передать читающему потоку.а где тут запись и конфликт?
Ты бы не в двух словах описывал.
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787595
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkoleg,

Queue<byte[]>
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787757
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegПодскажите, есть ли в java ...Вы бы хоть штатную документацию п(р)очитали предварительно ...
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787885
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ПанфиловLemkoleg,

Queue<byte[]>

BlockingQueue<byte[]> ?
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787902
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
стандартно
ConcurrentLinkedQueue
обычно не очень удобно, т.к. Unbounded и нельзя понять сколько в данный момент там данных.

Single Consumer Single Producer Circle Ring Buffer
реализация от сторонних подельников. Вроде в Java обещали добавить. Как обстоят дела на данный момент - не знаю
Обычно это Bounded коллекция, что IMHO и хорошо.

Если я правильно догадался о задаче, которая стоит перед автором
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787922
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegДобрый день. Подскажите, есть ли в java обьект (вроде ByteBuffer или ByteChannel), к которому возможно получить доступ одновременно двум потокам: одному для записи, другому для чтения. Без блокировки самого обьекта ( как минимум, на неиспользуемых в текущий момент байтах).

из готовых вам может подойти: AtomicIntegerArray
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787936
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
Похоже что правильно. А можно по-подробней?
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787937
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как на счет файла? Например RandomAccessFile? Если один поток откроет FileInputStream, а второй - FileOutputStream. Будут ли эти потоки работать одновременно, и будет ли у них (у каждого свой) счетчик текущей позиции?
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787938
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
Спасибо, почитаю
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787939
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Спасибо, гляну
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787945
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegА как на счет файла? Например RandomAccessFile? Если один поток откроет FileInputStream, а второй - FileOutputStream. Будут ли эти потоки работать одновременно, и будет ли у них (у каждого свой) счетчик текущей позиции?если писать куда попало, даже со своим счетчиком, то будет белибеда в файле.
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787948
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Походу вам потоки в задаче не нужны, т.к.вы не знаете что с ними делать.
Делайте в одном.
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787955
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
Я б с удовольствием. Но, нужно в двух
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787958
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123LemkolegА как на счет файла? Например RandomAccessFile? Если один поток откроет FileInputStream, а второй - FileOutputStream. Будут ли эти потоки работать одновременно, и будет ли у них (у каждого свой) счетчик текущей позиции?если писать куда попало, даже со своим счетчиком, то будет белибеда в файле.
Писать строго в порядке очереди. Читать - откуда попало, только в рамках уже записаного
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787959
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingАндрей ПанфиловLemkoleg,

Queue<byte[]>

BlockingQueue<byte[]> ?
Расматривается как вариант
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787965
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegPetro123пропущено...
если писать куда попало, даже со своим счетчиком, то будет белибеда в файле.
Писать строго в порядке очереди. Читать - откуда попало, только в рамках уже записаногоочередь в двух независимых потоках как попало.
Поэтому чтобы прочесть то что записал потокБ надо внешнюю синхронизацию. Например, из основного потока дернуть чтение ПОСЛЕ записи.
И буфера выключить.
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787972
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Lemkolegпропущено...

Писать строго в порядке очереди. Читать - откуда попало, только в рамках уже записаногоочередь в двух независимых потоках как попало.
Поэтому чтобы прочесть то что записал потокБ надо внешнюю синхронизацию. Например, из основного потока дернуть чтение ПОСЛЕ записи.
И буфера выключить.
А что, если , читающий поток, читает все подряд. И, исключительно, если меняет порядок чтения, то сигнализирует пишущий поток, чтоб тот дал разрешение на чтение, т.к. только он знает, можно ли читать эти данные?
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787973
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И буфера выключить.
Можно по-подробней, что это значит и как это сделать?)))
...
Рейтинг: 0 / 0
Обьект чтения-записи для двух потоков
    #39787979
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkoleg,

Читающий может по таймеру постоянно перечитывать. Можно сигнализировать от пишущего.
Это уже БЛ.
...
Рейтинг: 0 / 0
25 сообщений из 34, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Обьект чтения-записи для двух потоков
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]