![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
x3bytes |
|
||||||
Beaver Профиль Группа: Участник Сообщений: 13 Регистрация: 8.11.2006 Репутация: нет Всего: нет |
Здесь создаётся поток. Тоесть при нажатии на JPanel у окна которое содержит этот JPanel начинает крутится счётчик в заголовке окна. Грубо говоря пример эммуляции зажатия кнопки мыши на объекте(ведь в этом JPanel может быть рисованая кнопка) Мой вопрос про оптимизацию потока. Вроде всё работает, но если подумать то когда мы не нажимаем на JPanel наш поток надо приостанавливать(зачем зря будет работать). Потом запуск реализуется коммандой start() и постоянно вызывается при нажатии мышки. Правильно ли это? Как я знаю надо только 1 раз вызывать start() при запуске потока. Я пытался разобраться с wait() yield() и suspend() но чтот безрезультатно. Может ктот приведёт код правильного использования этих комманд? Можно ли реализовать поток независимо от этого класса Runnable типа:
так как если заменить этим кодом строчку
то при повторном нажатии на JPanel выскочит ошибка at java.lang.Thread.start(Thread.java:571) |
||||||
|
|||||||
LSD |
|
||||||||||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
1. Сделай так:
когда тебе надо выполнить какую-то работу делаешь так:
когда закончишь:
когда необходимость выполнять действия отпадет вообще (окно будет закрыто, выход из приложения и т.п.):
2. Когда идет доступ к компонентам Swing из другого потока, надо использовать такой метод:
3.
Это не ошибка, это ее кусок, по которому невозможно, что-то понять. -------------------- 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. |
||||||||||||
|
|||||||||||||
x3bytes |
|
|||
Beaver Профиль Группа: Участник Сообщений: 13 Регистрация: 8.11.2006 Репутация: нет Всего: нет |
Спасибо огромное тебе LSD !!!
![]() Столько перерыл справок и не смог по ним сделать работующую прогу. А по твоим словам сразу получилось. Привожу пример изменёной программы. Теперь я так понимаю всё сделано как надо и процесс пока он не нужен не обрабатывается процессором.
правда не совсем понял практическое применение invokeLater() |
|||
|
||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 31 Всего: 159 |
||||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
invokeLater() нужен для того чтобы выполнять действия в потоке обработки сообщений AWT.
Если мы будем одновременно из разных потоков менять данные, то может нарушится их целостность. Выхода два: синхронизировать доступ к данным, или делать все из одного потока. Синхронизация плоха тем, что замедляет скорость работы (синхронизированный вызов функции ощутимо дольше, не синхронизированного), поэтому для Swing был выбран второй метод (такой же подход выбран и для SWT, и для WindowsForms), а invokeLater() это просто способ его реализации. -------------------- 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. |
|||
|
||||
x3bytes |
|
|||
Beaver Профиль Группа: Участник Сообщений: 13 Регистрация: 8.11.2006 Репутация: нет Всего: нет |
А можно пример с оптимизацией на основе кода(приведеного выше) с использованием этой функции?
У меня всю дорогу только получается завесить приложение этой функцией. |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
Я тебе уже дал пример как надо его использовать. Ты его пробовал?
-------------------- 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. |
|||
|
||||
x3bytes |
|
|||
Beaver Профиль Группа: Участник Сообщений: 13 Регистрация: 8.11.2006 Репутация: нет Всего: нет |
Да спасибо!
Спасибо за помощь ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |