|
|
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
Как можно забрать данные из отдельно выполняемого потока ? Структура программы примерно следующая: Main -> Обновление данных по схемам Main -> Ожидание данных для обработки и их обработка по заданной схеме То есть поток выполняется бесконечно - как из него передать информацию туда откуда он вызывался ? Чтобы потом уже можно было работать с этой информацией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2006, 17:08:16 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
из отдельно работающей ява машины вы наверное имели ввиду? тогда RMI вам поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2006, 17:10:17 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
не совсем понял ? Прога будет выполнятся на одной виртуальной машине а что за RMI, простите не знаю что это..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2006, 17:15:44 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
При инициализации дополнительного потока передать ему ссылку на главный поток и дергать какой-либо метод главного (типа "накачать данные") из дополнительного. Что может быть проще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2006, 18:11:26 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
он жеПри инициализации дополнительного потока передать ему ссылку на главный поток и дергать какой-либо метод главного (типа "накачать данные") из дополнительного. Что может быть проще? по-моему у него нету главного и дополнительного потока. автор Main -> Обновление данных по схемам Main -> Ожидание данных для обработки и их обработка по заданной схеме ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2006, 18:22:22 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
muchacho по-моему у него нету главного и дополнительного потока. Абсолютно монопенисуально - главный и зависимый, либо оба дочерние. Ну какая разница-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2006, 18:43:36 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
Дочерний и главный поток, что-то странное (или я?..) Обычными методами синхронизации решается задача, смотреть в сторону задачи "писатель и читатель" - решений должно быть море в интернете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2006, 19:51:36 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
во! человек дело сказал. Ну или нанимайте меня например :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2006, 19:58:17 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
Leonidv У автора проблема в том, чтобы понять - куда писать-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2006, 20:00:41 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
эээ, забыл пояснить: main это public static void метод, являющийся точкой входа в приложение, другими словами, вы описали две разные точки входа (скажем разными bat файлами запускаются jar №1 и jar №2). Именно из этого был сделан вывод о разных средах выполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2006, 20:02:21 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
он жеПри инициализации дополнительного потока передать ему ссылку на главный поток и дергать какой-либо метод главного (типа "накачать данные") из дополнительного. Что может быть проще?Интересно, как это будет выглядеть :) Как вы собираетесь "дернуть" метод другого потока? И что вообще значит метод другого потока? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 12:29:09 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
JozicИнтересно, как это будет выглядеть :) Как вы собираетесь "дернуть" метод другого потока? И что вообще значит метод другого потока? Если мы имеем в виде поток Thread (а я лично его и имею в виду) - элементарно. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 13:05:01 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
Я думаю, не будет проблем понять - как вызывать и метод основного (main'а). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 13:05:33 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
Да, кстати, автор надеюсь понял - нужно не забирать данные из потока, а поток должен передавать данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 13:12:07 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
он жеДа, кстати, автор надеюсь понял - нужно не забирать данные из потока, а поток должен передавать данные. Спасибо за то что откликнулись..... Я уже пробовал передавать данные в main но выдаёт ошибки я создавал отдельный класс для принятия данных как в main так и в другом классе. Выдавало ошибку что данные должны быть статик - ставил как просило потом уже в процессе запуска выдавало ошибку. Короче я запутался ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 13:53:04 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
http://www.etu1362.spb.ru/ в информации лежать мои лабораторные работы к системам реального времени. Посмотрите, может поможет. Я их год назад делал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 14:24:11 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
он же JozicИнтересно, как это будет выглядеть :) Как вы собираетесь "дернуть" метод другого потока? И что вообще значит метод другого потока? Если мы имеем в виде поток Thread (а я лично его и имею в виду) - элементарно. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 14:43:00 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
мде... а код то можно ваш увидеть, а то чего тока не наплели... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 15:20:20 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
JozicВо-первых у Runnable нет метода callme(), а во-вторых вызов метода callme() произойдет в текущем потоке, даже если этот метод - метод объекта Thread (имхо стоит называть вещи своими именами :) ). И в-третих достаточно иметь ссылку на объект данных чтобы получить эти данные, и совсем не обязательно знать каким образом эти данные изменяюцца - из текущего или из другого потока. Во-первых, вы издеваетесь что-ли? При чем тут интерфейс Runnable? Я же пишу свой класс, его юзающий. Во-вторых, что вы подразумеваете под текущим потоком? В-третьих, вы вообще ап чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 15:47:13 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
он же JozicВо-первых у Runnable нет метода callme(), а во-вторых вызов метода callme() произойдет в текущем потоке, даже если этот метод - метод объекта Thread (имхо стоит называть вещи своими именами :) ). И в-третих достаточно иметь ссылку на объект данных чтобы получить эти данные, и совсем не обязательно знать каким образом эти данные изменяюцца - из текущего или из другого потока. Во-первых, вы издеваетесь что-ли? При чем тут интерфейс Runnable? Я же пишу свой класс, его юзающий. Во-вторых, что вы подразумеваете под текущим потоком? В-третьих, вы вообще ап чем? Во-первых, не издеваюсь, а просто придолбался :): Код: plaintext 1. 2. Во-вторых: под текущим я понимаю, выполняющийся в данный момент поток. Но имелось в виду то, что в вашем примере вызвался метод объекта Х имплементирующего Раннбл, но не "метод другого потока". Можно ввестись в заблуждение, читая такое :) В-третих, я о том что как уже ранее говорилось: LeonidvДочерний и главный поток, что-то странное (или я?..) Обычными методами синхронизации решается задача, смотреть в сторону задачи "писатель и читатель" - решений должно быть море в интернете. при описанной автором схеме, можно найти более простое решение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 16:20:22 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
Я решил сделать отдельный проект просто для тестирования работы потока..... main класс Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. класс потока Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. и в итоге интересная ситуация..... просто запуская программу получаем в консоли Новое имя потока: Thread[New Thread,5,main] New Thread:завершён нормально Array M1 = 0 0 0 0 0 при запуске через дебагер при просмотре как что и куда пишется получаем.... Новое имя потока: Thread[New Thread,5,main] New Thread:завершён нормально Array M1 = 0 1 2 3 4 в чём здесь ошибка почему я не могу вывести данные при простом запуске ???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2006, 22:52:37 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
В-общем, вы не представляет, что у вас происходит и почему, правда? У вас есть два пути. а) Купить (скачать, открыть имеющуюся) книгу по основам Java (раздел потоки) и прочитать про то, как там всё функционируют. Это хорошо, т.к. вы научитесь и в будущем будете работать, зная... б) Я могу вам привести работающий пример того, как нужно передавать данные. Это плохо, т.к. вы просто схаваете готовое решение и скоро всё забудете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2006, 23:01:24 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
Jozic Но имелось в виду то, что в вашем примере вызвался метод объекта Х имплементирующего Раннбл, но не "метод другого потока". Можно ввестись в заблуждение, читая такое :) Главное - идея :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2006, 23:03:21 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
ENigMA2meв чём здесь ошибка почему я не могу вывести данные при простом запуске ???? Скажу лишь, что главная ошибка - ожидание того, что данные немедленно будут доступны сразу после создания объекта new T1("New Thread"). И, кстати, надпись на экране должна быть вида (порядок следования) New name: Thread[New Thread,5,main] Array M1 = 0 0 0 0 0 New Thread:success что логично, а не ENigMA2me Новое имя потока: Thread[New Thread,5,main] New Thread:завершён нормально Array M1 = 0 0 0 0 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2006, 23:11:14 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
И, кстати, t.start() - это отнюдь не запуск метода run :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2006, 23:12:11 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
он жеИ, кстати, t.start() - это отнюдь не запуск метода run :) Странно а в книге Г. Шилда написано что start() выполняет вызов метода run().... ну да это не главное, на самом деле я действительно думал, что как только поток запущен из него можно забирать инфу. Какими методами мне нужно сделать проверку на доступность данных из потока. Знаю проверку на отработку завершения потока. Просто этот поток должен крутится бесконечно и через определённые интервалы обновлять информацию. А эту информацию мне нужно потом использовать. Подскажите как сделать так чтобы ожидать записи информации..... Если не хотите раскрывать хитрые коды просто напишите чем пользоваться - а дальше буду умные книги читать.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2006, 00:04:43 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
Вот добавил следующий код в main(): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. теперь показывает как надо, но как сделать чтобы данные обновлялись и их в любой момент можно забирать не дожидаясь завершения потока ? У меня будет бесконечный цикл в потоке - типо обновление инфы через заданный промежуток времени..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2006, 00:32:19 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
ENigMA2me Странно а в книге Г. Шилда написано что start() выполняет вызов метода run().... Как бы вам сказать... Предназначение Thread - выполнение потока параллельно с текущим (грубо говоря). Вы стартуете Thread и он начинает работать в фоне (опять грубо говоря). Т.е. вызывается t.start() и тут же передается управление дальше по тексту. А вы сначала выводите чиселки, и только потом поток в фоне обновит static массив. Вот и получается совсем не то, что ожидается. Не буду буферизовать. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2006, 00:40:13 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
Мда, вот что значит посоветоваться со стаей товарищей - предложили мне вариант и я его малость доработал. Сделать поток без цикла внутри, а сам вызов потока сделать в цикле и внутри цикла ожидать завершения потока и принятия данных. Теперь должно быть всё в шоколаде. Спасибо всем за вашу помощь и поддержку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2006, 00:40:23 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
ENigMA2meМда, вот что значит посоветоваться со стаей товарищей - предложили мне вариант и я его малость доработал. Сделать поток без цикла внутри, а сам вызов потока сделать в цикле и внутри цикла ожидать завершения потока и принятия данных. Теперь должно быть всё в шоколаде. Спасибо всем за вашу помощь и поддержку. Не дай вам бог так писать :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2006, 00:42:08 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
Зачем тогда вообще вам поток-то??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2006, 00:44:02 |
|
||
|
Как забрать данные из потока
|
|||
|---|---|---|---|
|
#18+
Ваш примерчик увидел уже после своего ответа :( Он грамотнее. А поток - чтобы вычисления проводились без вмешательства, чтобы всегда были свежие данные, автоматизация процесса..... чтобы из других мест программы обращаться к данным которые периодически обновляются. Понятно что я предложил не лучший вариант, но я только учусь правильно писать - для того и существуют советы на форумах. С потоками я раньше не работал поэтому как заново открываю программирование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2006, 00:58:17 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2147742]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
180ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 474ms |

| 0 / 0 |
