|
|
|
InputStream, сравнение версий 1.4.2, 1.5.0, 6.0
|
|||
|---|---|---|---|
|
#18+
Blazkowicz Innate В этом месте разговор пошел по кругу... В этом месте разговор можно завершать. Вижу по сути ответить нечего. Зачем же Вам было повторять то, что было сказано Вами же выше? Получается, что Вам сказать-то как раз и нечего. Blazkowicz Innate А до конца читать мы не хотим или не умеем, да? См. про isEndOfStream(). Уважаемый, Вы зарываетесь. Побоку что поменять. Требование к available или добавить новый метод. Множество существующих реализаций InputStream станут не совместимыми с этими требованиями. Один из вариантов это ещё придется добавить метод isEndOfStreamDetectionSupported(). Согласен, что проблемы совместимости со старыми версиями остануться в обоих случаях. Blazkowicz Вы кажется сами подзабыли о чем спрашивали в исходном топике. Про какие-то эксперименты с Java 6. А какие, к черту, эксперементы, если логика работы класса не менялась? Не кажется ли вам, что логика работы поменялать. В 1.4.2 и 1.5.0 никто не предлагает использовать available() для определения конца потока, в 6.0 это же это предусматривается, правда как-то неоднозначно. Вот и интересно, как работают хотя бы классы, которые Java API принадлежат. Blazkowicz Innate Здесь я про пример ситуации, в которой принципиально невозможно различить, достигнут ли конец протока или просто доступные для чтения данные закончились. Какое-то физическое устроиство или другой источник данных, доступ к которому абстрогируется с помощью InputStream. Тю блин. Вот это уже точно разговор ни о чем. Ну допустим у меня есть девайсина с буфером. И я читаю из этого буфера, если там есть данные. Такая себе простецкая реализация. Может там данные уже и никогда не придут. Как мне конец потока определить? Зачем что-то выдумывать, когда наши с Вами выдумки все равно не охватят нужное множество реализаций? Не кажется ли Вам, что здесь просто нет конца протока. Метод read() тоже никогда не вернет -1 в этом случае. А вот available() 0 вернуть может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 17:31:39 |
|
||
|
InputStream, сравнение версий 1.4.2, 1.5.0, 6.0
|
|||
|---|---|---|---|
|
#18+
Kachalov2 Innate - извините за глупый вопрос, но не могли бы Вы объяснить в каких случаях (для каких задач) Вы планируете использовать метод available() Да вроде цель, для которой был придуман available(), ясна. Для того, чтобы читать из потока (Stream) данные без блокировки; то есть пока читать нечего, нить (Thread) не блокируется, ожидая прихода данных, а может заняться чем-то другим, прериодически проверяя, с помощью метода available(), не проявилось ли что-то для чтения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 17:35:43 |
|
||
|
InputStream, сравнение версий 1.4.2, 1.5.0, 6.0
|
|||
|---|---|---|---|
|
#18+
mayton2 Innate За определённые деньги я напишу для вас одну из реализаций InputStream для чтения потока файла с возможностью "смотреть вперёд". Вопросы согласованности/конкуренции/версионности буду игнорировать, как не имеющие значения для постановки. Вас это устроит? Да мне пока не надо. Но буду иметь вас в виду. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 17:38:43 |
|
||
|
InputStream, сравнение версий 1.4.2, 1.5.0, 6.0
|
|||
|---|---|---|---|
|
#18+
InnateНе кажется ли вам, что логика работы поменялать. Нет не кажется. InnateВ 1.4.2 и 1.5.0 никто не предлагает использовать available() для определения конца потока, в 6.0 это же это предусматривается, правда как-то неоднозначно. Как раньше так и сейчас никто не предлагал использовать available для определения конца потока. Как раньше так и сейчас available() возвращает 0 в обоих случаях - конец потока и не возможность чтения без блокировки. InnateВот и интересно, как работают хотя бы классы, которые Java API принадлежат. Как работали так и работают. Буфер пустой? available==0. Конец данных? available==0. Предлагаю сойтись на почти полной бесполезности метода available. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 18:13:08 |
|
||
|
InputStream, сравнение версий 1.4.2, 1.5.0, 6.0
|
|||
|---|---|---|---|
|
#18+
InnateДа вроде цель, для которой был придуман available(), ясна. Для того, чтобы читать из потока (Stream) данные без блокировки; то есть пока читать нечего, нить (Thread) не блокируется, ожидая прихода данных, а может заняться чем-то другим, прериодически проверяя, с помощью метода available(), не проявилось ли что-то для чтения. - если необходимо чтобы Thread читал данные из потока и делал еще что-то, не означает ли это что необходимо два Thread-а, один из которых занимается чтением данных из потока (и его блокировка нас не волнует), а второй "делает еще что-то"? По моему, это классическая постановка задачи для написания многопоточного приложения. - как Вы себе представляете "периодическую проверку" в общем потоке с чтением данных и выполнением "чего-то еще"? Без дополнительного потока не обойтись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 18:55:21 |
|
||
|
InputStream, сравнение версий 1.4.2, 1.5.0, 6.0
|
|||
|---|---|---|---|
|
#18+
Blazkowicz InnateНе кажется ли вам, что логика работы поменялать. Нет не кажется. InnateВ 1.4.2 и 1.5.0 никто не предлагает использовать available() для определения конца потока, в 6.0 это же это предусматривается, правда как-то неоднозначно. Как раньше так и сейчас никто не предлагал использовать available для определения конца потока. Как раньше так и сейчас available() возвращает 0 в обоих случаях - конец потока и не возможность чтения без блокировки. InnateВот и интересно, как работают хотя бы классы, которые Java API принадлежат. Как работали так и работают. Буфер пустой? available==0. Конец данных? available==0. Предлагаю сойтись на почти полной бесполезности метода available. Ок. Сошлись. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 18:55:38 |
|
||
|
InputStream, сравнение версий 1.4.2, 1.5.0, 6.0
|
|||
|---|---|---|---|
|
#18+
Kachalov- если необходимо чтобы Thread читал данные из потока и делал еще что-то, не означает ли это что необходимо два Thread-а, один из которых занимается чтением данных из потока (и его блокировка нас не волнует), а второй "делает еще что-то"? По моему, это классическая постановка задачи для написания многопоточного приложения. - как Вы себе представляете "периодическую проверку" в общем потоке с чтением данных и выполнением "чего-то еще"? Без дополнительного потока не обойтись. Показательный пример это задача чтения из большого количества потоков, данные на которые поступают крайне медленно. Для всех этих потоков имеет смысл завести ограниченое число нитей, которые будут их перебирать и вычитывать данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2007, 12:18:19 |
|
||
|
InputStream, сравнение версий 1.4.2, 1.5.0, 6.0
|
|||
|---|---|---|---|
|
#18+
Blazkowicz Показательный пример это задача чтения из большого количества потоков, данные на которые поступают крайне медленно. Для всех этих потоков имеет смысл завести ограниченое число нитей, которые будут их перебирать и вычитывать данные. - все равно нужна дополнительная "контрольная" нить, "которая будет их перебирать", т. е. что бы ни говорил Innate о пользе метода available, а задачу надо решать путем создания многопочного приложения (с "контрольной нитью" или без нее это уже детали зависящие от планируемой нагрузки). А многопоточное приложение работающее с потоками данных это классика программирования на Java, такой пример разбирается в каждой книжке по Java :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2007, 12:52:09 |
|
||
|
InputStream, сравнение версий 1.4.2, 1.5.0, 6.0
|
|||
|---|---|---|---|
|
#18+
KachalovА многопоточное приложение работающее с потоками данных это классика программирования на Java, такой пример разбирается в каждой книжке по Java :) Ну, так может многоуважаемый гуру подскажет нам название книжки и главу в которую смотреть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2007, 12:56:30 |
|
||
|
InputStream, сравнение версий 1.4.2, 1.5.0, 6.0
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНу, так может многоуважаемый гуру подскажет нам название книжки и главу в которую смотреть? - не первый раз замечаю что Вы ко мне не ровно дышите (лично я себя "гуру" не считаю и встреваю в топики которые нтересны лично мне или где я, как мне кажется, могу быстро помочь человеку). Blazkowicz - объясните причины личной неприязни, может мы с Вами встречались в "реале" (в Крыму я был неоднократно)? или это желание оставить последнее слово за собой (я на последнее слово не претендую - просто флуд раздражает)? или конкуренция в бизнесе? Не понимаю :( На всякий случай, что бы прекратить дальнейший флуд, заявляю: единственный гуру на всех форумах по Java - это великолепный Blazkowicz. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2007, 13:52:53 |
|
||
|
InputStream, сравнение версий 1.4.2, 1.5.0, 6.0
|
|||
|---|---|---|---|
|
#18+
Kachalovобъясните причины личной неприязни Никакой лично не приязни. Просто не приятно, когда тебя пытаются отослать к "каждой книжке по Java", при этом, естественно, если перечислять "каждую книжку по Java", окажется что не в каждой. А может даже и вообще ни в одной. Вот и хотелось бы услышать о какой книжке речь. С примером многопоточного чтения без блокировок на методе read. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2007, 14:04:36 |
|
||
|
InputStream, сравнение версий 1.4.2, 1.5.0, 6.0
|
|||
|---|---|---|---|
|
#18+
Kachalov(лично я себя "гуру" не считаю и встреваю в топики которые нтересны лично мне или где я, как мне кажется, могу быстро помочь человеку). Отсыл к "каждой книжке по Java" выдает в Вас гуру. Вы же всех их прочитали. Не скромничайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2007, 14:06:56 |
|
||
|
InputStream, сравнение версий 1.4.2, 1.5.0, 6.0
|
|||
|---|---|---|---|
|
#18+
BlazkowiczОтсыл к "каждой книжке по Java" выдает в Вас гуру. Вы же всех их прочитали. Не скромничайте. По просьбам телезрителей: Родли Джон "Создание Java-апплетов" "ДиаСофт Лтд." 1996г (ностальгия по апплетам) стр. 178 глава "Ждать и уведомлять" (многопоточная загрузка большого количества картинок для апплета - тогда еще не было класса MediaTraker) Джамса Крис "Библиотека программиста Java" "Попурри" 1997г стр. 463 глава "Рассматриваем Two-Way Chat" (многопоточный сервер) Чен М. "Программирование на Java: 1001 совет" "Попурри" 1997г совет 845 (страницы не пронумерованы) "Реализация многопоточного сервера" совет 846 "Почему клиенты должны быть многопоточными" Вебер Д. "Технология Java в подлиннике" "BHV" 2000г стр. 445 глава "Разработка сервера курса акций" (классический учебный многопоточный сервер) Морган Майкл "Java 2. Руководство разработчика" "Вильямс" 2000г стр. 439 глава "Использование клиентских и серверных объектов Socket" (учебный многопоточный сервер) Второе издание Эккеля у меня увели (возможно там было то что нужно - не помню), а в третьем нет подходящего примера. Копаться в книгах типа Visual J++ (разных авторов) не стал. С какого то момента покупать книжки по основам программирования на Java перестал, так как не находил в них ничего нового, а полки не резиновые, хотя соблазн собрать коллекцию всего что выходит о Java был. В приведенной библиографии указаны только книжки имеющие примеры связаные с темой топика, т. е. многопоточным сетевым взаимодействием. Не могу сказать что я "прочитал все книжки по Java", но сказать что прочитал все книжки по основам программирования на Java на русском языке с 1996 года по 2000г могу :) но при этом отнюдь не считаю себя гуру Java-программирования, ведь Java это океан знаний и врядли найдется программист знающий Java одинаково хорошо во всех ее проявлениях (SE, EE, ME + чудесные фреймворки + и т. д.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2007, 14:45:15 |
|
||
|
InputStream, сравнение версий 1.4.2, 1.5.0, 6.0
|
|||
|---|---|---|---|
|
#18+
Kachalov Blazkowicz Показательный пример это задача чтения из большого количества потоков, данные на которые поступают крайне медленно. Для всех этих потоков имеет смысл завести ограниченое число нитей, которые будут их перебирать и вычитывать данные. - все равно нужна дополнительная "контрольная" нить, "которая будет их перебирать", т. е. что бы ни говорил Innate о пользе метода available, а задачу надо решать путем создания многопочного приложения (с "контрольной нитью" или без нее это уже детали зависящие от планируемой нагрузки). А многопоточное приложение работающее с потоками данных это классика программирования на Java, такой пример разбирается в каждой книжке по Java :) Все это верно. Только с блокировками придется создавать отдельную нить для чтения каждого потока, чтобы обрабатывать данные как можно раньше после их появления в потоке, что при большом количестве потоков не является хорошей идеей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2007, 19:14:39 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34693624&tid=2144999]: |
0ms |
get settings: |
21ms |
get forum list: |
23ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
69ms |
get topic data: |
23ms |
get forum data: |
5ms |
get page messages: |
105ms |
get tp. blocked users: |
3ms |
| others: | 315ms |
| total: | 578ms |

| 0 / 0 |
