![]() |
|
Модераторы: javastic, AntonSaburov |
![]()
|
|
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
Я хочу сделать поток, который при определенных условиях будет вызывать событие и передавать ему строку.
В C# это можно сделать с помощью делегатов. В C++ это можно сделать с помощью посылки сообщения WM_DATACOPY А как это сделать в J2ME. P.S. Чтобы было понятнее опишу задачу. Создается поток, который слушает TCP/IP порт, ка только прихлдят данные - он их выводит на экран. -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| Antropoid |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 786 Регистрация: 1.6.2006 Где: &Ukraine==Ode ssa Репутация: 13 Всего: 16 |
Запускаешь тред, который будет слушать порт. В J2ME метод прослушки блокирующий, т.е. тред сам на нем остановица, а как только шота придет, - о проснеца ну и выведет тебе чего нада на экран.
-------------------- ![]() Задыхаясь от восторга заниматься чепухой. |
|||
|
||||
| javastic |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1214 Регистрация: 18.3.2005 Где: St.Petersburg Репутация: 19 Всего: 27 |
Artemon, вот тебе простой пример из WTK, там совершенно не надо использовать события:
это всё в методе run() надо прописывать. Учти что код неполный, я просто в комментарии указал как это работает -------------------- 01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011 scjp, mcp |
|||
|
||||
| W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
Посмотри в WTK есть пример \\WTK\apps\NetworkDemo\src\socket\ Класс Client или Server. там замечательно описано как создать поток и слушать сокет. А в классе Sender нормально показано как отправлять и при этом сделать нормальную синхронизацию Добавлено через 4 минуты и 45 секунд гг, javastic, быстрее успел -------------------- iOS developer |
|||
|
||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
Работа с сетью - это частный случай.
Я хотелбыв узнать вообще про общую идею. Поворю вопрос: Как вызвать событие в основном потоке из дополнительного? -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
Почему это частный случай??? Опиши конкретнее че тебе надо. -------------------- iOS developer |
|||
|
||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
Частный - потомучто решает конкретную задачу.
Еще раз поворю вопрос: Допустим у нас крутятся 2 потока: 1. Основной 2. Дополнительный. В дополнительном потоке выполняется лишь одна операция:
Я хочу чтобы через каждые 5 итераций управление переходило в основной поток. P.S. Переменную Val - нельзя выносить из дополнительного потока. Это сообщение отредактировал(а) W0LF - 18.9.2007, 13:21 -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
1. Что такое основной поток? это поток приложения??
2. Что значит переходило управление?? это наверно надо первый поток приостановить сначала чтоб потом к нему переходило управление. многопоточность для того и служит чтоб потоки работали параллельно Я правильно понял? если так, то тогда могу и пример набросать. но в этом случае пример сети как раз нормально подходит -------------------- iOS developer |
|||
|
||||
| Dancer |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: 33 Всего: 37 |
ну а теперь смотрим в сторону wait() и notify()
вызываем wait() через пять циклов, и делаем notify() на объекте твоего "основного" потока.
Это сообщение отредактировал(а) W0LF - 18.9.2007, 14:19 -------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! |
|||
|
||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
Набросай, если не сложно
-------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
Писал навскидку, мож дет и натупил..
В общем у нас создаются два потока. второй сразу останавливается. Начинает работать первый, када доходит до инта делимого на 5 останавливается и запускает второй поток, тот в свою очередь делает то же - 5 итераций, остановился, запустил первый. Может я тебя неправильно понял конечно -------------------- iOS developer |
|||
|
||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
".notify();" - вот это я и пытался из вас выудить!!!!
Итак, вопрос решен но на половину. Осталось только узнать как например передать переменную через notify() ??? Например: notify("String value") -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
Сейчас попробовал из вторичного потока обратиться к графическим компонентам основного потока и я не получил никакого исключения.
в J2ME можно напрямую обращаться к компонентам формы из вторичных потоков??? -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| javastic |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1214 Регистрация: 18.3.2005 Где: St.Petersburg Репутация: 19 Всего: 27 |
Я начинаю понимать что я ничего не понимаю.
-------------------- 01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011 scjp, mcp |
|||
|
||||
| W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
Да, это баг j2me я бы сказал обычно этого делать низя, но в j2me можно. И через notify параметр не передашь. Храни его дето в модели. перед notify измени его там. А другой поток када проснеццо пусть заберет его из модели. и не забывай про синхронизацию. или же ставь спец. доступа переменной volatile -------------------- iOS developer |
|||
|
||||
![]()
|
FAQ раздела лежит здесь! |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |