AM>Пишу мидлет GPRS чат.
AM>есть класс form в ней будут лэйблами отображаться записи чата
AM>по кнопке может открыться новая форма для отправки сообщения
AM>(класс form он у меня многофункциональный и может быть вида info(инофрмация),message(ввод сообщения),chatroom(список сообщение) и settings(настройки: ник и прочее) определяется параметром конструктора)
AM>есть отдельный класс connector он обеспечивает отправку сообщения и получение новых, работает в отдельной нити
AM>есть класс storage хранилище данных: записей чата, никнейм, и т.д.
AM>-----------------------------------------------
AM>теперь нжна обратная связь
AM>из form в storage (например сохранить настройки пользователя)
AM>из connector в storage (добавить новые записи чата)
AM>из connector в form(chatroom) обновить отображаемые записи
AM>сейчас я делаю так
AM>у меня в storage есть метод formfeedback(form f) который на входе имеет форму,
AM>по типу формы я определю что требуется
AM>есть тип формы settings то из формы я беру данные настроек и сохраняю storage
AM>если тип формы message то порождаю новый connector в отдельной нити отправлющий сообщение и получающий новые
AM>причем connector-у я передаю в конструктор форму f для того чтобы connector кода закончит работу мог тоже просигнализировать
AM>storage через formfeedback(f)
AM>покритикуйте\расскажите как делаете вы?
Я ничего не понял. Рассмотри вопросы:
1. можно ли обращаться к формам из других потоков (awt — можно, swing — нельзя, мидлеты — ???)
если можно — то значит прямо из потока connector можно дергать методы форм
если нельзя — то нужно как-то передать управление в поток, которому можно. В свингах это делается так
Runnable r = new Runnable(){
public void run()
{
// Code to access your form
}
};
javax.swing.SwingUtilities.invokeAndWait( r );
2. многопоточное приложение — всегда геморой. Посмотри внимательнее, возможно сможешь избавиться от многопоточности.