powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Быстро перейти с С++ на Java
64 сообщений из 64, показаны все 3 страниц
Быстро перейти с С++ на Java
    #37801784
dr001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется большой опыт разработки на C++, и небольшой (<0,5 года) на Java.
Необходимо как можно быстрее подтянуть свои скилы по Jave. Что рекомендуете почитать?
*желательно что-то наподобии серии по С++ от Меерса... (только для Java)
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37801798
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dr001,

Если Вы имеете в виду язык программирования, то нужно где-то полчаса времени. Столько же нужно, чтобы перейти с явы на сишарп. Другое дело, инструменты, классы, поля и методы. Только это зависит очень сильно от того, чем Вы хотите заниматься. Например, можно заниматься вэбом, а можно писать программы для стиральных машин. Таки, две большие разницы!
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37801808
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Effective Java 2 ed.
Ну и Thinking in Java 4 ed
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37801809
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dr001,

Исходите из того, что сама технология Java представлена платформами -

Java SE;

Java SE for Embedded ;

Sun Java Real Time System ;

Java ME;

Java Card;

Java EE

В каждой из них существуют свои стандарты технологий. Если учесть, что Java SE– основа для всех остальных платформ, то начать
лучше с нее. Соответственно, литература.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37801821
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-void,

Во-во. И я о том же. Только позвольте не согласиться с тем, что SE - основа для других платформ. Да, язык один и тот же, однозначно. Но ME отличается от SE не меньше, чем Card от EE. Это как отличаются си плюс-плюс под линух и подвенды. Ну да, язык один и тот же.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37801842
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge,

Cпецификация языка, рантайм- окружение, JVM, JDK и пр. входят в JSE.

JME требует наличия JDK, входящего в JSE .

Java Card исключает многие возможности языка - типы char, double, float и long, transient, перечисления, многомерные массивы, финализаторы, клонирование объектов, потоки, при этом использует javac, входящий в JSE.

Относительно C++ для Windows и Linux- можно использовать одни и те же стандартный C++ и Qt.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37801870
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergedr001,

Если Вы имеете в виду язык программирования, то нужно где-то полчаса времени. Столько же нужно, чтобы перейти с явы на сишарп. Другое дело, инструменты, классы, поля и методы. Только это зависит очень сильно от того, чем Вы хотите заниматься. Например, можно заниматься вэбом, а можно писать программы для стиральных машин. Таки, две большие разницы!
Угу точно.... За полчаса можно разобраться с многопоточностью в яве, с ее моделью памяти....
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37801915
bajork
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Когда я портировал себя с с++ на джава пересмотрел несколько книжек понравилась только "философия джава" так как походила на труд Страуструпа.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802296
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
riskУгу точно.... За полчаса можно разобраться с многопоточностью в яве, с ее моделью памяти....
А чем многопоточность в яве отличается от какой-то другой многопоточности? Даже методы очень часто одинаково называются (типа, синхронизе и т.п.). Кстати, в яве это дело очень даже понятно сделано: или наследоваться от класса Thread, или использовать (implements) интерфейс Runnable.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802349
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeriskУгу точно.... За полчаса можно разобраться с многопоточностью в яве, с ее моделью памяти....
А чем многопоточность в яве отличается от какой-то другой многопоточности? Даже методы очень часто одинаково называются (типа, синхронизе и т.п.). Кстати, в яве это дело очень даже понятно сделано: или наследоваться от класса Thread, или использовать (implements) интерфейс Runnable.
Ну если в могопоточности самое главное уметь запустить поток/нить... то каг бы не спорю... BTW в связи с тем что Ява кросплатформенная, Thread на разных ОС это разные вещи с точки зрения ОС...
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802350
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ ко всему надо отметить, что разрабочик Шарпа очень хорошо знал целевую ОС... в отличии от разработчика Явы... Это так же является причиной многих различий в Явы и Шарпа....
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802360
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeА чем многопоточность в яве отличается от какой-то другой многопоточности?

Реализация многопоточности зависит от целевой операционной системы. Поэтому для компилируемых языков поддержка обеспечивается сторонними библиотеками, в случае c Java поддержка существует на уровне языка.

ShSergeКстати, в яве это дело очень даже понятно сделано: или наследоваться от класса Thread, или использовать (implements) интерфейс Runnable.

Расширение Thread лишает возможности использования пулов.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802364
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
riskShSergeпропущено...

А чем многопоточность в яве отличается от какой-то другой многопоточности? Даже методы очень часто одинаково называются (типа, синхронизе и т.п.). Кстати, в яве это дело очень даже понятно сделано: или наследоваться от класса Thread, или использовать (implements) интерфейс Runnable.
Ну если в могопоточности самое главное уметь запустить поток/нить... то каг бы не спорю... BTW в связи с тем что Ява кросплатформенная, Thread на разных ОС это разные вещи с точки зрения ОС...
Да ну! И какие же оси Вы использовали? Я вот на многих осях проверял, но мне интересно было только виндовс и линух (убунту). Таки проверял. Однако, всё хорошо работает.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802370
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-voidРасширение Thread лишает возможности использования пулов.
Весьма сомневаюсь, но давайте ссылочку, а лучше примерчик.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802391
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge,

Вот хороший примерчик.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802393
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeivanov-voidРасширение Thread лишает возможности использования пулов.
Весьма сомневаюсь, но давайте ссылочку, а лучше примерчик.
Тоже не совсем понял о чем речь...
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802395
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[offtop]
risk+ ко всему надо отметить, что разрабочик Шарпа очень хорошо знал целевую ОС... в отличии от разработчика Явы... Это так же является причиной многих различий в Явы и Шарпа....
Уже просто тошнит от пропаганды! Топикстартер не интересовался офигительностью дотнета и сильверлайта.
[/offtop]
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802399
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-voidShSerge,

Вот хороший примерчик.

Это вы к чему скинули кусок кода?
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802400
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeДа ну! И какие же оси Вы использовали? Я вот на многих осях проверял, но мне интересно было только виндовс и линух (убунту). Таки проверял. Однако, всё хорошо работает.
Что хорошо работает ? Создание потока? Создает? Ну круто....
Только я говорил о том что на Линуксе и на Винде один и тот же кусок кода делает разные вещи... Да самое главное и сложно в могопоточности не создание потока или нити...
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802406
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
riskЭто вы к чему скинули кусок кода?

Это класс Executors, содержащий методы создания пулов потоков.
Интерфейс ThreadFactory требует реализации метода с аргументом, реализующим Runnable.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802434
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-voidriskЭто вы к чему скинули кусок кода?

Это класс Executors, содержащий методы создания пулов потоков.
Интерфейс ThreadFactory требует реализации метода с аргументом, реализующим Runnable.
Зачем этот класс я в курсе, я не могу понять зачем вы его сюда приплели ?
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802436
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avp.mk[offtop]
risk+ ко всему надо отметить, что разрабочик Шарпа очень хорошо знал целевую ОС... в отличии от разработчика Явы... Это так же является причиной многих различий в Явы и Шарпа....
Уже просто тошнит от пропаганды! Топикстартер не интересовался офигительностью дотнета и сильверлайта.
[/offtop]
Какая нахер пропаганда ? Это детали технической реализации...
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802440
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче говоря, вот так лучше не делать -

Код: java
1.
2.
3.
4.
5.
6.
7.
...
class SomeThread extends Thread {
   public void run() {
      ...
   }
}
...



, а реализовывать Runnable.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802443
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
riskЗачем этот класс я в курсе, я не могу понять зачем вы его сюда приплели ?

Читайте внимательнее топик.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802549
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-voidКороче говоря, вот так лучше не делать -

Код: java
1.
2.
3.
4.
5.
6.
7.
...
class SomeThread extends Thread {
   public void run() {
      ...
   }
}
...



, а реализовывать Runnable.

Да что вы говорите ? Интересно.... А можешь словами рассказать почему это?
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802668
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-voidИнтерфейс ThreadFactory требует реализации метода с аргументом, реализующим Runnable.
public class Thread
extends Object
implements Runnable

основной недостаток наследования от Thread это невозможность наследоваться от чего-то еще.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802726
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaivanov-voidИнтерфейс ThreadFactory требует реализации метода с аргументом, реализующим Runnable.
public class Thread
extends Object
implements Runnable

основной недостаток наследования от Thread это невозможность наследоваться от чего-то еще.
Ну конечно... При этом, это уже относится не многопоточности, а к проблемам множественного наследования в яве через интерфейсы....
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802867
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaосновной недостаток наследования от Thread это невозможность наследоваться от чего-то еще.
Не основной. Наследование от Thread приводит к сильной связности кода задач, выполняемых параллельно, с выбором параллелизма.


risk При этом, это уже относится не многопоточности, а к проблемам множественного наследования в яве через интерфейсы....
Проблем множественного наследования в Java с применением интерфейсов нет. И тем не менее это имеет прямое отношение к вопросам многопоточности.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802907
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕсли Вы имеете в виду язык программирования, то нужно где-то полчаса времени. Столько же нужно, чтобы перейти с явы на сишарп. Другое дело, инструменты, классы, поля и методы.
Если бы я не знал, что вы часто тут отписываетесь и иногда говорите вещи по делу, я бы подумал что это высказывание принадлежит троллю.
Собственно, что касается многопоточности, вот на этом
авторА чем многопоточность в яве отличается от какой-то другой многопоточности? Даже методы очень часто одинаково называются (типа, синхронизе и т.п.). Кстати, в яве это дело очень даже понятно сделано: или наследоваться от класса Thread, или использовать (implements) интерфейс Runnable.

конечно можно останавливать дискуссию:) Лол

Если по делу, то такие высказывания считаю полной профанацией, научиться понимать синтаксис и научиться программировать на языке, это две огогошеньки какие разницы. Многопоточность в java и ее memory model понимает хорошо если 1 девелопер из 10, для остальных это практически равносильно пустому звуку.

авторchpasha
основной недостаток наследования от Thread это невозможность наследоваться от чего-то еще.

Не основной. Наследование от Thread приводит к сильной связности кода задач, выполняемых параллельно, с выбором параллелизма.

Послушайте человека, он вам правильные вещи говорит, ну а если он не авторитет, то хотя бы ради приличия прочитайте java concurrency in practice.
В промышленных приложениях, практически вся многопоточность идет через Executors, который как уже отметили принимает Runnable, это позволяет не писать своих велосипедов(которые не факт что получится написать), а воспользоваться опытом профессионалов. Работа через Executors позволяет отделить механизм запуска задач и управления ими от собственно самих задач.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802910
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблем множественного наследования в Java с применением интерфейсов нет.

Ну это слишком сильное заявление) Недаром уже который год обсуждают дополнение java traitами.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802943
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никПослушайте человека, он вам правильные вещи говорит, ну а если он не авторитет, то хотя бы ради приличия прочитайте java concurrency in practice.
В промышленных приложениях, практически вся многопоточность идет через Executors, который как уже отметили принимает Runnable, это позволяет не писать своих велосипедов(которые не факт что получится написать), а воспользоваться опытом профессионалов. Работа через Executors позволяет отделить механизм запуска задач и управления ими от собственно самих задач.

Не надо сюда вмешивать конкарренси... Это уже надстройка над Thread и Runable... еще атомарными переменными-операциями и волотайер.... Надо для начала разобраться с простым, а уже потом лезть с дебри...
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802945
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник Проблем множественного наследования в Java с применением интерфейсов нет.

Ну это слишком сильное заявление) Недаром уже который год обсуждают дополнение java traitами.
Блин, я с опаской жду таких дополнений в Джаве.... Тут и без них в двух соснах путаемся... А потом вообще потеряемся.... Но в принципе вы правы - проблемы с множественным наследованием есть и это traits одна из попыток их решить...
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802948
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-voidНе основной. Наследование от Thread приводит к сильной связности кода задач, выполняемых параллельно, с выбором параллелизма.

Ну ка ну ка расскажите нам темным, какие есть "параллелизмы" в яве ?
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802949
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
riskНе надо сюда вмешивать конкарренси... Это уже надстройка над Thread и Runable... еще атомарными переменными-операциями и волотайер.... Надо для начала разобраться с простым, а уже потом лезть с дебри....

Сюда это куда? Естественно это не место для обсуждения всяких деталей, имелся ввиду один посыл - изучить java за полчаса - это просто нереальный бред, и был приведен наглядный пример многопоточности, а есть же еще дженерики, ввод-вывод(сериализация), коллекции, всякие там equals compareTo... и это только язык, не говоря о множестве идиом паттернов и фреймворков
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802955
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никСюда это куда? Естественно это не место для обсуждения всяких деталей, имелся ввиду один посыл - изучить java за полчаса - это просто нереальный бред, и был приведен наглядный пример многопоточности, а есть же еще дженерики, ввод-вывод(сериализация), коллекции, всякие там equals compareTo... и это только язык, не говоря о множестве идиом паттернов и фреймворков

Согласен в этом с Вами... Я просто говорил, о том что мы тут не можем разобраться с Runable и Thread.... а вы заговорили о конкарренси....
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37802993
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никПослушайте человека, он вам правильные вещи говорит, ну а если он не авторитет, то хотя бы ради приличия прочитайте java concurrency in practice.
В промышленных приложениях, практически вся многопоточность идет через Executors, который как уже отметили принимает Runnable
Дружочек, прежде чем писать глупости, читай. Thread реализует Runnable.

ivanov-voidchpashaосновной недостаток наследования от Thread это невозможность наследоваться от чего-то еще.
Не основной. Наследование от Thread приводит к сильной связности кода задачни к какой связности оно не приводит. Thread это Runnable, ты эту мысль понять в состоянии? Если ты наследуешься от Thread, можешь ссылаться на класс как на Runnable со всеми вытекающими.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37803053
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaДружочек, прежде чем писать глупости, читай. Thread реализует Runnable.

Ну зачем же так палить контору ))))
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37803073
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaни к какой связности оно не приводит

Приводит. Если вы расширяете Thread, то у вас и потокозависимый код, и инкапсуляция задачи, которая должна выполняться в отдельном потоке, комбинируется в одном классе.

Да, пулы потоков можно создавать и из наследников Thread, извиняюсь за дезинформацию; однако лучше этого не делать. Почему - см. выше.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
...
/**
 * @author ivanov-void
 */
public class Main {
	/**
	 * @param argc
	 */
    public static void main(String[] argc) {
		ExecutorService executor = Executors.newFixedThreadPool(20);
		Runnable worker = new Worker(0);
		SomeThread thread = new SomeThread(0);
		for(int i = 0; ++i < 100; thread = new SomeThread(i))			
			executor.execute(thread);		

		executor.shutdown();
		while (!executor.isTerminated());
		
		System.out.println("Terminated all threads");
	}    
}
...

/**
 * @author ivanov-void
 */
public class SomeThread extends Thread {
	private final long count;
	/**
	 * @param count
	 */
	SomeThread(long count) {
		this.count = count;
	}
	/**
	 * 
	 */
	public void run() {
		long sum = 0;
		for (long i = -1; ++i < count; sum += i);				
		System.out.println(sum);
	}
}
...
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37803125
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-void
Код: java
1.
		for (long i = -1; ++i < count; sum += i);				



За одно это надо руки отбивать....
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37803134
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
risk,

Ночь.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37803769
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaчитай.
Ок, приму к сведению. Встречное предложение прочесть что-нибудь по теме "Этикет" или "Как общаться с людьми и не выглядеть при этом быдлом".

chpashaThread реализует Runnable.

Ок, технически ты прав, только я не пойму зачем защищать явные глупости? Я имел ввиду, что интерфейс Executor кагбе намекает что туда надо передавать именно Runnable а не Thread. Передавать туда Thread хоть и технически возможно, но абсолютно бессмысленно. Это примерно такой же глупый и ненужный код как String description = new String("description"). Реалии таковы, что если вы пишете не какую-нибудь мелкую утилиту, то смысла использовать Thread напрямую нет, даже более того, кто-нибудь может умудриться вызвать на этом Thread start() или run(), не раз такое встречал.

ivanov-voidпропущено...

Не основной. Наследование от Thread приводит к сильной связности кода задачни к какой связности оно не приводит. Thread это Runnable, ты эту мысль понять в состоянии? Если ты наследуешься от Thread, можешь ссылаться на класс как на Runnable со всеми вытекающими.[/quot]
Можно, но зачем? Это бесмысленно, вы можете понять эту мысль?

И еще раз, вот это -

авторpublic class Thread
extends Object
implements Runnable

основной недостаток наследования от Thread это невозможность наследоваться от чего-то еще.

Не самый большой недостаток, с выходом j.u.c. создание нити через new Thread() можно сказать что deprecated
Так что, последуйте своему же совету и
авторпрежде чем писать глупости, читай
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37803822
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
странно, что организация потоков на прикладном уровне кода, занимает столько места в топике ;).
Наверно, imho незаслуженно.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37803836
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaДружочек, прежде чем писать глупости, читай. Thread реализует Runnable.
ни к какой связности оно не приводит. Thread это Runnable, ты эту мысль понять в состоянии? Если ты наследуешься от Thread, можешь ссылаться на класс как на Runnable со всеми вытекающими.
Даже в базовой документации (то ли в JavaDoc, то ли в туториале) сказано что реализовывать Runnable предпочтительнее чем наследоваться от Thread. Какой великий смысл в том чтобы наследовать класс от Thread, но при этом использовать его исключительно как Runnable?
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37803845
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaни к какой связности оно не приводит
Наследуя задачи от Thread мы автоматом убиваем возможноть выстроить иерархию задач, т.к. множественного наследования в Java нет.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37803873
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никВстречное предложение прочесть что-нибудь по теме "Этикет" или "Как общаться с людьми и не выглядеть при этом быдлом".

Дорогой друг, если писать незнакомым людям подобное:

забыл никПослушайте человека, он вам правильные вещи говорит, ну а если он не авторитет, то хотя бы ради приличия прочитайте java concurrency in practice.
можно еще не то услышать

забыл никОк, технически ты прав, только я не пойму зачем защищать явные глупости?
в каком месте я это делаю? всего лишь пытаюсь открыть глаза тем, кто не способен подумать головой, а только цитирует банальности.

забыл никЯ имел ввиду, что интерфейс Executor кагбе намекает что туда надо передавать именно Runnable а не Thread. Передавать туда Thread хоть и технически возможно, но абсолютно бессмысленно. Это примерно такой же глупый и ненужный код как String description = new String("description").
опять глупости. Executors принимает интерфейс как раз для того, чтобы в него передали то что удобно автору кода, при условии, что оно реализует интерфейс.

забыл ник Если ты наследуешься от Thread, можешь ссылаться на класс как на Runnable со всеми вытекающими.
Можно, но зачем? Это бесмысленно, вы можете понять эту мысль?
я правильно понимаю, ты пять минут назад еще не знал, что Thread это Runnable, a теперь пытаешься мне растолковать очевидное? Объясню на пальцах: я нигде не говорил, что нужно обязательно наследоваться от Thread. Однако ваши заходы про причины, почему этого делать не надо, за гранью глупости.

забыл никавторпрежде чем писать глупости, читай
просто ввернуть мою же фразу ни к селу ни к городу мало. цитировать тоже нужно уметь.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37803892
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczНаследуя задачи от Thread мы автоматом убиваем возможноть выстроить иерархию задач, т.к. множественного наследования в Java нет.а я о чем 12584168 ?

BlazkowiczДаже в базовой документации (то ли в JavaDoc, то ли в туториале) сказано что реализовывать Runnable предпочтительнее чем наследоваться от Thread. Какой великий смысл в том чтобы наследовать класс от Thread, но при этом использовать его исключительно как Runnable?
блин читайте уже топики сначала. в каком месте я утверждал, что это нужно и хорошо? Поступило заявление о том, что при наследовании от Thread нельзя юзать пул потоков.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37803919
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaа я о чем 12584168 ?
Так это и есть следствие сильной связанности с классом Thread. Вы ведь её отрицаете дальше.

chpashaблин читайте уже топики сначала.
Вот ещё. :)

chpashaв каком месте я утверждал, что это нужно и хорошо? Поступило заявление о том, что при наследовании от Thread нельзя юзать пул потоков.
"Нельзя" можно трактовать как "не возможно", а можно трактовать как "не стоит".
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37803925
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123странно, что организация потоков на прикладном уровне кода, занимает столько места в топике ;).
Наверно, imho незаслуженно.
Это всегда так когда спор идёт не о предмете спора а об аргументах. :)
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37803939
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не ради холивара, а ради того что сейчас нечего делать:)
Вы так умело придираетесь к чужим словам и неправильно сформулированным фразам, и в упор не видите своих таких же косяков, это печально.

chpashaBlazkowiczНаследуя задачи от Thread мы автоматом убиваем возможноть выстроить иерархию задач, т.к. множественного наследования в Java нет.а я о чем 12584168 ?
Вообще, технически ничего не мешает сделать самый верхний класс иерархии наследником Thread, а остальные наследовать от него, только это, конечно, глупость несусветная.


chpashaBlazkowiczДаже в базовой документации (то ли в JavaDoc, то ли в туториале) сказано что реализовывать Runnable предпочтительнее чем наследоваться от Thread. Какой великий смысл в том чтобы наследовать класс от Thread, но при этом использовать его исключительно как Runnable?
блин читайте уже топики сначала. в каком месте я утверждал, что это нужно и хорошо? Поступило заявление о том, что при наследовании от Thread нельзя юзать пул потоков.
Зато вы очень хорошо читаете топик)

авторПослушайте человека, он вам правильные вещи говорит, ну а если он не авторитет, то хотя бы ради приличия прочитайте java concurrency in practice.
В промышленных приложениях, практически вся многопоточность идет через Executors, который как уже отметили принимает Runnable, это позволяет не писать своих велосипедов(которые не факт что получится написать), а воспользоваться опытом профессионалов. Работа через Executors позволяет отделить механизм запуска задач и управления ими от собственно самих задач.

Где тут хоть слово про то, что "при наследовании от Thread нельзя юзать пул потоков."(c)?

А вот это(уже который раз цитирую)

авторpublic class Thread
extends Object
implements Runnable

основной недостаток наследования от Thread это невозможность наследоваться от чего-то еще.

Если не глупо, то несоотвествует действительности. Не считая того, что Thread нерекомендуем в принципе, механизм Runnable + Executors позволяет отделить механизм запуска задач и управления ими от собственно самих задач.

авторя правильно понимаю, ты пять минут назад еще не знал, что Thread это Runnable,
Спасибо что объяснил, лол:)
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37803972
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczТак это и есть следствие сильной связанности с классом Thread. Вы ведь её отрицаете дальше.
гмм...если я говорю, что основной недостаток - невозможность наследования от чего-то еще, а мне возражают, что нет, это не основной недостаток, основной недостаток это связность - я начинаю подозревать, что под связностью человек имеет в виду что-то другое. нет? лично я под связностью понимаю, когда некий класс ссылается на наш Worker, в то время как ему достаточно Runnable.


Blazkowiczchpashaв каком месте я утверждал, что это нужно и хорошо? Поступило заявление о том, что при наследовании от Thread нельзя юзать пул потоков.
"Нельзя" можно трактовать как "не возможно", а можно трактовать как "не стоит".
так мы далеко заедем. но вот первоисточник:

авторРасширение Thread лишает возможности использования пулов. как предлагаешь понимать сие?
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37803983
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaавторРасширение Thread лишает возможности использования пулов. как предлагаешь понимать сие?
Предлагаю понимать так: расширение Thread вносит двойственность в рантайм задачи, так что не всегда понятно то ли она выполнилась в пуле, то ли в потоке, который реализует.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37803994
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никВы так умело придираетесь к чужим словам и неправильно сформулированным фразам...

Вообще, технически ничего не мешает сделать самый верхний класс иерархии наследником Thread, а остальные наследовать от него, только это, конечно, глупость несусветная.если бы ничего не мешало, не плакались бы о множественном наследовании. достаточно базовому классу находится в библиотеке и уже приплыли.


забыл никГде тут хоть слово про то, что "при наследовании от Thread нельзя юзать пул потоков."(c)?


вот:

ivanov-voidРасширение Thread лишает возможности использования пулов.
прежде, чем ты скажешь, что это не ты сказал - да не ты, а он. а я ему возразил. а ты мне сказал, чтоб я его слушал и вообще пошел про concurrency почитал.

забыл никавторя правильно понимаю, ты пять минут назад еще не знал, что Thread это Runnable,
Спасибо что объяснил, лол:)на здоровье
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37804008
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaivanov-voidРасширение Thread лишает возможности использования пулов.
прежде, чем ты скажешь, что это не ты сказал - да не ты, а он. а я ему возразил. а ты мне сказал, чтоб я его слушал и вообще пошел про concurrency почитал.


Ок, забей, да я тоже недосмотрел под чем подписываюсь
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37804211
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Резюмируя, возвращаю читателя к поправке, сделанной несколько позже, но, почему- то, оставшейся незамеченной, судя по тексту, последовавшему после нее: 12585516
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37804332
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-voidРезюмируя, возвращаю читателя к поправке
не понятно, что автор хотел этим кодом сказать. налицо зависимость от класса SomeThread. То что этот класс наследует Thread из контекста не прослеживается, никакие свойства и методы Thread не вызываются, так где приведенный код зависит от Thread? Замените в классе SomeThread наследование на implements Runnable и исходный код никак не поменяется. В данном случае вредность наследования от Thread никак документально не подтверждается.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37804470
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наследование классов приводит к сильной связности. Имеет смысл расширять Thread , если вы хотите изменить его поведение по- умолчанию, путем переопределения тех или иных методов. Без необходимости этого делать не следует.

Реализация же интерфейса Runnable ведет к слабой связности.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37804488
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-voidРеализация же интерфейса Runnable ведет к слабой связности.
Чего-чего?
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37804931
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Более наглядный пример связности - создаем новые потоки и задачи . Для экземпляра Thread вызов метода run приводит к синхронному запуску потока , тогда как для экземпляра задачи просто выполняется метод .

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
...

		ExecutorService executor = Executors.newFixedThreadPool(20);
		
		Runnable task = null;
		SomeThread thread = null;
		for(int i = -1; ++i < 100;) {
			thread = new SomeThread(i); // It creates a new _thread_
			task = new Task(i);		// It creates a new _object task_
			
			executor.execute(thread);
			executor.execute(task);
		}

		thread.run(); // synchronously start the _thread_
		task.run();		// _method_ is executed
		
		executor.shutdown();
		while (!executor.isTerminated());

...



Теперь что касается пулов. Далее в классе Executors для двух этих вызовов -

Код: java
1.
2.
3.
4.
5.
			
...
executor.execute(thread);
executor.execute(task);
...



, конструируется новый поток следующим образом -

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
...
       public Thread newThread(Runnable r) {
            Thread t = new Thread(group, r,
                                  namePrefix + threadNumber.getAndIncrement(),
                                  0);
            if (t.isDaemon())
                t.setDaemon(false);
            if (t.getPriority() != Thread.NORM_PRIORITY)
                t.setPriority(Thread.NORM_PRIORITY);
            return t;
        }
    }
...



Т.е. смысла применять расширения Thread для пулов нет, а следовательно и сама возможность теряет смысл.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37804950
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-voidТ.е. смысла применять расширения Thread для пулов нет, а следовательно и сама возможность теряет смысл.

Вы просто гениальны.... Спасибо что рассказали что thread pool юзает свои потоки для выполнения задач.... Еще откровения будут ?
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37804955
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
thread.run не стартует поток.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37804995
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schwa,

Да, вы правы, небольшая ремарка - в данном случае происходит синхронное выполнение двух методов, последовательно, в одном и том же потоке. Но, реализуя Runnable, я могу определить свой метод start(), и вызвать его в главном потоке; start() же экземпляра, наследующего Thread, запустит новый поток асинхронно.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37805260
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В том, что Thread реализует Runnable нет никакого смысла, это просто еще один прикол в стандартной библиотеке. Никто не положит в thread в Executor. Также как и никто не будет никогда писать Runnable, который запускается не вызывом метода run.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37805286
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никто не мешает реализовать Executor, который в зависимости от обстоятельств будет использовать Thread как Runnable или как Thread.
...
Рейтинг: 0 / 0
Быстро перейти с С++ на Java
    #37805594
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-voidНо, реализуя Runnable, я могу определить свой метод start(), и вызвать его в главном потоке; start() же экземпляра, наследующего Thread, запустит новый поток асинхронно.Реализуя метод start, ты не можешь больше ссылаться на объект как на Runnable, а должен указывать его конкретный тип. И вот тут-то мы и получаем ту пресловутую связность. точно также мы не можем вызвать start у Thread не зная что это именно Thread.
...
Рейтинг: 0 / 0
64 сообщений из 64, показаны все 3 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Быстро перейти с С++ на Java
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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