Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
44 / 44 / 11
Регистрация: 21.01.2013
Сообщений: 668
1

В чем суть неблокируемости в nio?

25.07.2014, 17:51. Показов 985. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
nio позиционируется как неблокирующая технология.

Хотел бы понять что где блокируется на примере:

вот у меня пример с nio:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
RandomAccessFile aFile = new RandomAccessFile("data/nio_data.txt", "rw");
        FileChannel inChannel = aFile.getChannel();
    
        ByteBuffer buf = ByteBuffer.allocate(100);
 
        int bytesRead = inChannel.read(buf);
        while (bytesRead != -1) {
 
            System.out.println("Read " + bytesRead);
            buf.flip();
 
            while (buf.hasRemaining()) {
                System.out.print((char) buf.get());
            }
 
            buf.clear();
            bytesRead = inChannel.read(buf);
        }
        aFile.close();

вот обычное io:


Java
1
2
3
4
5
    FileReader fileReader = new FileReader("data/nio_data.txt");
        char buffer [] = new char [100]; 
        while(fileReader.read(buffer)!=-1){
            System.out.println(buffer);
        }

Результат я вижу всё тот же. А кода на порядок меньше.

Проясните пожалуйста.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.07.2014, 17:51
Ответы с готовыми решениями:

Объясните в чем суть ошибки работы session в Hibernate
Пишу пробный проект. Есть сущность User и таблица users Mysql. Имеется слой DAO и Servise В...

Интерфейсы - в чем их суть
В чем суть интерфейсов объясните пожалуйста. Добавлено через 19 минут А если быть точнее, то...

Указатели - в чем суть?
Кто нибидь может мне обястнить укасзатели в С++,ато я некак не врубаюсь.

В чем суть PHP?
Ребят, подскажите пожалуйста правильно ли я понял суть PHP. Вот лежит на сервере код определенный....

5
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
25.07.2014, 18:26 2
gredwhite,
Смысл появляется когда у нас есть несколько потоков которые читают/пишут.
Для одного потока нет разницы. Кроме скорости IO работает быстрее.
Так же NIO асинхронен.
0
44 / 44 / 11
Регистрация: 21.01.2013
Сообщений: 668
26.07.2014, 00:25  [ТС] 3
XRoy, можете как-то расширить мои примеры так, чтобы были видны очевидные преимущества nio ?
0
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
26.07.2014, 01:59 4
gredwhite,
Здесь отличным примером послужит работа с сетью.
Например если вы пишите чат, где у большое количество соединений с клиентами и передаваемы данные небольшие по объему в нашем случае текст, то лучше использовать асинхроный NIO. Где поток контролирует определенное количетсво соединений.
IO подходит для P2P, например торрент, где каждый клиент обменивается большими потоками инфорции. И каждый поток контролирует одно соединеие.
0
44 / 44 / 11
Регистрация: 21.01.2013
Сообщений: 668
28.07.2014, 18:20  [ТС] 5
XRoy, такие общие слова я уже не раз читал) может покажете что-то конкретное?

Добавлено через 6 часов 17 минут
И да, я говорю про НЕБЛОКИРУЕМОСТЬ (мне кажется вы идёте в сторону асинхронности).

Если я правильно понимаю, у меня должен быть буффер и канал.

на момент 6 джавы актуален следующий ответ:
http://stackoverflow.com/a/2037048/2674303

То есть не так то уж много вариантов получить канал.

Если вызвать метод getChannel дважды, то он вернёт тот же канал.

В общем я не вижу где тут многопоточность прикрутить.
0
44 / 44 / 11
Регистрация: 21.01.2013
Сообщений: 668
29.07.2014, 23:21  [ТС] 6
по ходу как-то через селекторы. Но это будет работать только для канала, который можно переключить в неблокирующий мод. FileChannel такого не умеет.

Что-то совсем тяжело идёт. Может кто посоветует путь попроще ?
0
29.07.2014, 23:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.07.2014, 23:21
Помогаю со студенческими работами здесь

В чем суть continue в if-else
код первый. прата глава 7 упражнение 3. оператор continue отсутствует, все прекрасно работает....

В чем суть интерфейсов?
За день я в интернете начиталась столько всего про интерфейсы, что запуталась до нельзя!!! И...

В чем суть операторов << и >>
Здравствуйте. Уважаемые Форумчане, нужна помощь. Имеется следующий код if ((PINB&amp;(1 &lt;&lt;...

Ошибка в логах , в чем суть?
Здравствуйте. Кто может сказать что написано в этих логах?(обьяснить в чем именно ошибка)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru