| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Средство для обеспечения повторов |
| Автор: sol78 28.8.2007, 18:38 |
| Вот такая история - мне нужно что то для обеспечения проверки содержимого текучещей папки, т.е. не изменилось ли оно, через некоторое количество времени. Где то слышала что в джаве есть инструменты для этого, помогите найти и научите ими пользоваться?! Заранее благодарна! |
| Автор: sol78 28.8.2007, 21:53 |
| Я пишу HotFolder рабочей единицей тут является файл содержащейся в папке. Дело в том что можно добовлять файлы runtime .Как мне отследить изменения, появился ли новый файл? |
| Автор: _Michael 28.8.2007, 21:57 | ||
|
| Автор: _Michael 28.8.2007, 22:14 |
| sol78, ну че там? если что непонятно то говори |
| Автор: sol78 17.11.2007, 01:28 |
| да что то тут много не понятно.... |
| Автор: Kangaroo 17.11.2007, 01:45 |
так не понятно, что 3 месяца разбирался? напиши хоть, что не получается, попробуем помочь. |
| Автор: sol78 25.11.2007, 16:02 |
| дело в том что задача не была четко поставлена так... Как бы это профессиональнее реализовать? -Есть система, которая должна с каким то периодом времени проверять состояние физ. папки если состояние изменилось - обработать только новое. Тут возникает проблема -нужно как то помнить прежние состояния папки, что бы избежать повторов? Как определить, что состояние изменилось? И что есть в джабе для этого? |
| Автор: LSD 25.11.2007, 17:12 |
| http://java.sun.com/docs/books/tutorial/uiswing/misc/timer.html |
| Автор: sol78 26.11.2007, 14:28 |
| Использование Swing Timera: как я поняла созадан для swing/awt компоненов, т.к использует механизм с листенерами и для выполнения длительных задач все еще нужен отдельний сред...Но в принципе идея не плохая! Может кто реально реализовывал выше изложенную задачу, помогите плизз? |
| Автор: LSD 28.11.2007, 00:21 | ||
|
| Автор: sol78 19.12.2007, 21:32 | ||
| Voznikla problema s rabotoy Timera ...Nuzhno dozhdat'sya rezultata raboti threda,
Kak pri obrabotke odnogo eventa, dozhdat'sya drugogo, prichem vsya rabota idet v threde??? |
| Автор: LSD 20.12.2007, 12:42 | ||
| 1. Не пиши транслитом, очень тяжело читать. Если нет русской клавиатуры используй чекбокс трансдит. 2. Объясни задачу почетче, из твоего кода ничего непонятно. Например зачем этот код
выносить в отдельный поток? Он же выполняется очень быстро. |
| Автор: sol78 20.12.2007, 19:46 |
| |
| Автор: sol78 20.12.2007, 20:14 | ||||||
| Postorayusь obьyasnitь v chem problema: est' nekiy main-thread(GUI), cherez nego zapuskaet Analizator, kotoriy rabotaet kak timer... ....Analizator delaet svoyu rabotu, gotovit Task i kladet ego v ConcurrentQueue . Dalee rabotaet ThreadPoolExecutor, zabiraet iz Q taski i vipolnyaya ix. Posle vipolneniya taska, resultat "vibrasivaetsya" kak event, Analizator slushaet eti sobitiya i reagiruet. I tak po krugu. ....User sam mozhet zapustit' analizator i ostanovit' ego esli nuzhno Tut voznikaet neskol'ko problem: 1.Kogda user zapuskat Analizator (new Analizator ->run thread) ostanavlivaet ego (timer.setRepeats(false);) i snova zapuskaet Analizator (resultatom etogo imeem uzhe 2 threada) kak bit'? 2 Kak vse eto delo krasivo ostanovit' (exit from app), pri uslovii chto nuzhno dozhdat'sya vipolneniya vsex zapuschenix iz ThreadPoolExecutor??? Prilagayu ves' kod: Analizator
Queue
Task
|
| Автор: Zlatogorov 21.12.2007, 00:11 |
| А может не стоит так усложнять себе жизнь. Для таймеров есть http://www.opensymphony.com/quartz/ . Прописывается временной паттерн и создаётся scheduling, и всё, остальное он берёт на себя. К примеру : "0 0/5 14 * * ?" Fire every 5 minutes starting at 2pm and ending at 2:55pm, every day Так что настройки очень гибкие. Сделал на нём Hotfolder - всё работает как часы. |
| Автор: LSD 21.12.2007, 12:27 |
| Т.е. я так понял основная проблема состоит в том, что анализатор при остановке должен дождаться пока выполняться все таски положенные в очередь executor-а? Так? |
| Автор: sol78 21.12.2007, 20:12 |
| da, vernee poslednego i edinstvennogo (poka) |
| Автор: LSD 22.12.2007, 14:47 | ||
Вот примерный код как реализовать CQueue
Там есть еще один момент, я не знаю что ты хотела реализовать на самом деле, но ограничение максимального размера tasksQueue на самом деле достаточно бесмысленно. Т.к. таски из нее в ThreadPoolExecutor перекидываются достаточно быстро и они никогда не заполняется. |