![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Nodir |
|
|||
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 9.5.2006 Где: Bukhara --> T ashkent --> Seoul Репутация: нет Всего: нет |
Zdrastvuyte, izvenayus chto pishu ne russkim shriftom, potomushto seychas u moyom comp`e netu ix. Est vopros. GUI Swing prilojenie, est dve button`a "Start" "Stop". Po najatie Start`a zapuskaetsa perviy potok i uvelichivaet odnu peremennuyu. A po najatie Stop`a perviy Thread doljen zavershitsya, i vtoroy potok doljen brat znachenie uvelichennova peremennova. Esli est vremya kompiliruyte eto i posmotrite.
|
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
1. Строки сравниваются equals(), а не ==.
2. Если нажата кнопка Start, то ты запускаешь новый поток и выполняешь в нем write() (он и начинает писать в консоль). А если нажата кнопка Stop, то ты запускаешь новый поток и выполняешь в нем stoping(), но это влияет только на этот поток. Он успешно завершает свою работу так ее и не начав. К тому же ты никак не передаешь результат из первого потока во второй. Тебе надо при нажатии Stop сказать для первого потока stoping() и дождаться когда он остановится (Thread.join()). Затем получить результат вычислений первого потока, создать второй, передав ему результат работы первого, и запустить второй поток. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Nodir |
|
|||
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 9.5.2006 Где: Bukhara --> T ashkent --> Seoul Репутация: нет Всего: нет |
Во время работы первого потока как я могу вызвать для него stopping(). И какую роль играет здесь
Thread.join(), подробнее pls, я не профессионал. Если можно ![]() |
|||
|
||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 31 Всего: 159 |
Второй поток должен обладать ссылкой на объект первого потока, что бы иметь возможность посылать ему сообщения (т.е. вызывать его методы). Заместо Thread (насколько я понял) должна быть ссылка на первый объект-поток. Вызов метода join() для первого потока из контекста второго потока заставит пристановиться вызывающий поток (второй) до завершения работы первого. Второй поток как бы повисает на вызове метода join() Первый поток будет завершен, если его метод run() возвратит управление или он будет прерван по случаю выброса исключения. Как только первый поток завершит работу, вызов метода join() возвратит управление, тем самым выполнение второго потока возобновиться. Этот прием называется "объединение потоков" (join - англ. соединять, объединять, связывать, скреплять). удивительно, я тоже! ![]() |
|||
|
||||
Nodir |
|
|||
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 9.5.2006 Где: Bukhara --> T ashkent --> Seoul Репутация: нет Всего: нет |
Если правильно понял то должен получится вот так, но не тот... Где ошибка?...
Вот изменение.
|
|||
|
||||
powerOn |
|
||||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 31 Всего: 159 |
Посмотри вот этот код:
Имеется фрейм, на нем 2 кнопки. Нажатие первой кнопки создаст поток 1 (его класс MyThread1). Первый поток просто увеличивает свой внутренний счетчик и все. Нажатие на кнопку 2 приведет к созданию второго потока, который желает получить значение счетчика первого потока. Для того что бы это сделать он останавливает первый поток и ждет его завершения, послечего получает значения счетчика. Вот код остановки и ожидания завершения первого потока (он в методе run() класса MyThread2):
|
||||
|
|||||
Nodir |
|
|||
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 9.5.2006 Где: Bukhara --> T ashkent --> Seoul Репутация: нет Всего: нет |
Большое спасибо!
![]() ![]() ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |