powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Быстро перейти с С++ на Java
14 сообщений из 64, страница 3 из 3
Быстро перейти с С++ на 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
14 сообщений из 64, страница 3 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Быстро перейти с С++ на Java
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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