|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
Добрый день. Подскажите, есть ли в java обьект (вроде ByteBuffer или ByteChannel), к которому возможно получить доступ одновременно двум потокам: одному для записи, другому для чтения. Без блокировки самого обьекта ( как минимум, на неиспользуемых в текущий момент байтах). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 02:38 |
|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 06:44 |
|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
Вообще чаще всего народ юзает хешмеп для этих целей https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentHashMap.html ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 06:48 |
|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
Lemkoleg, В java все объекты. От элементарного типа до космического корабля. Стойкий к запросам большой объект получить труднее и он зовется thread safe. Или вы о коллекции объектов? Поэтому задачу нужно подробнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 07:13 |
|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
Petro123, Нужно байты, по мере их поступления в текущий поток, передать читающему потоку. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 10:12 |
|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
Почитай про Disruptor. Может подойдёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 10:30 |
|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
LemkolegPetro123, Нужно байты, по мере их поступления в текущий поток, передать читающему потоку.а где тут запись и конфликт? Ты бы не в двух словах описывал. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 10:38 |
|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
Lemkoleg, Queue<byte[]> ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 10:43 |
|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
LemkolegПодскажите, есть ли в java ...Вы бы хоть штатную документацию п(р)очитали предварительно ... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 13:46 |
|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
Андрей ПанфиловLemkoleg, Queue<byte[]> BlockingQueue<byte[]> ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 16:07 |
|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
стандартно ConcurrentLinkedQueue обычно не очень удобно, т.к. Unbounded и нельзя понять сколько в данный момент там данных. Single Consumer Single Producer Circle Ring Buffer реализация от сторонних подельников. Вроде в Java обещали добавить. Как обстоят дела на данный момент - не знаю Обычно это Bounded коллекция, что IMHO и хорошо. Если я правильно догадался о задаче, которая стоит перед автором ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 16:28 |
|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
LemkolegДобрый день. Подскажите, есть ли в java обьект (вроде ByteBuffer или ByteChannel), к которому возможно получить доступ одновременно двум потокам: одному для записи, другому для чтения. Без блокировки самого обьекта ( как минимум, на неиспользуемых в текущий момент байтах). из готовых вам может подойти: AtomicIntegerArray ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 16:46 |
|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Похоже что правильно. А можно по-подробней? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 16:55 |
|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
А как на счет файла? Например RandomAccessFile? Если один поток откроет FileInputStream, а второй - FileOutputStream. Будут ли эти потоки работать одновременно, и будет ли у них (у каждого свой) счетчик текущей позиции? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 16:57 |
|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
Озверин, Спасибо, почитаю ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 16:57 |
|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
mayton, Спасибо, гляну ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 16:58 |
|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
LemkolegА как на счет файла? Например RandomAccessFile? Если один поток откроет FileInputStream, а второй - FileOutputStream. Будут ли эти потоки работать одновременно, и будет ли у них (у каждого свой) счетчик текущей позиции?если писать куда попало, даже со своим счетчиком, то будет белибеда в файле. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 17:04 |
|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
Походу вам потоки в задаче не нужны, т.к.вы не знаете что с ними делать. Делайте в одном. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 17:06 |
|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
Petro123, Я б с удовольствием. Но, нужно в двух ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 17:15 |
|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
Petro123LemkolegА как на счет файла? Например RandomAccessFile? Если один поток откроет FileInputStream, а второй - FileOutputStream. Будут ли эти потоки работать одновременно, и будет ли у них (у каждого свой) счетчик текущей позиции?если писать куда попало, даже со своим счетчиком, то будет белибеда в файле. Писать строго в порядке очереди. Читать - откуда попало, только в рамках уже записаного ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 17:16 |
|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
llemingАндрей ПанфиловLemkoleg, Queue<byte[]> BlockingQueue<byte[]> ? Расматривается как вариант ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 17:17 |
|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
LemkolegPetro123пропущено... если писать куда попало, даже со своим счетчиком, то будет белибеда в файле. Писать строго в порядке очереди. Читать - откуда попало, только в рамках уже записаногоочередь в двух независимых потоках как попало. Поэтому чтобы прочесть то что записал потокБ надо внешнюю синхронизацию. Например, из основного потока дернуть чтение ПОСЛЕ записи. И буфера выключить. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 17:29 |
|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
Petro123Lemkolegпропущено... Писать строго в порядке очереди. Читать - откуда попало, только в рамках уже записаногоочередь в двух независимых потоках как попало. Поэтому чтобы прочесть то что записал потокБ надо внешнюю синхронизацию. Например, из основного потока дернуть чтение ПОСЛЕ записи. И буфера выключить. А что, если , читающий поток, читает все подряд. И, исключительно, если меняет порядок чтения, то сигнализирует пишущий поток, чтоб тот дал разрешение на чтение, т.к. только он знает, можно ли читать эти данные? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 17:36 |
|
Обьект чтения-записи для двух потоков
|
|||
---|---|---|---|
#18+
И буфера выключить. Можно по-подробней, что это значит и как это сделать?))) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 17:37 |
|
|
start [/forum/topic.php?fid=59&msg=39787922&tid=2121423]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 311ms |
total: | 452ms |
0 / 0 |