|
|
|
Как можно организовать запуск и преостанов потоков одновременно (start+wait).
|
|||
|---|---|---|---|
|
#18+
Вот такой код: Код: 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. Проблемма заключается в том что хотелось бы запустить поток p и приостановить поток main одновременно, а затем поток p возобновил работу потока main. А то получается что возобновление потока main возможно быстрее приостановки потока main. У меня есть одно не рациональное конструкция, в которой поток p будет ждать( с использованием sleep в цикле (что нерационально)) пока не заблокируется поток main, и затем разблокирует его. Может ктонибудь знает метод запуска потока и преостановки текущего или как можно подругому это организовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2006, 12:51 |
|
||
|
Как можно организовать запуск и преостанов потоков одновременно (start+wait).
|
|||
|---|---|---|---|
|
#18+
м-м не уверен, что понял что ты хочешь... но есть такая штука, как Thread.join этот метод автоматически приостанавливает текущий поток до окончания выполнения потока, у которого был вызван метод join. короче: вызови p.join(); удачи :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2006, 01:41 |
|
||
|
Как можно организовать запуск и преостанов потоков одновременно (start+wait).
|
|||
|---|---|---|---|
|
#18+
p.join() подошел бы, если бы main нужно возобновлять по окончанию p. Но тогда p вообще не нужен. Чтобы p мог возобновить main, когда это будет нужно, и при этом смог сам продолжить работу, можно поступить в таком духе: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2006, 02:15 |
|
||
|
Как можно организовать запуск и преостанов потоков одновременно (start+wait).
|
|||
|---|---|---|---|
|
#18+
to Pitbull terrier: Мне нужно чтото вроде join (дожидаемся завершения потока), но дожидатся надо некую точку в порождённом потоке, а не завершения (т.е. после синхронизации(точки) нужно делать некоторые вещи асинхронно с главным потоком). to Ненавижу регистрацию: а разве при остановке потока main (main.wait()), поток останица в критическойсекции (значит main заблокирован) и код: //поток p первым делом ждет, чтобы main уснул synchronized(main) { } некогда не запустится, т.к. объект main заблокирован. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2006, 11:07 |
|
||
|
Как можно организовать запуск и преостанов потоков одновременно (start+wait).
|
|||
|---|---|---|---|
|
#18+
sysmanxа разве при остановке потока main (main.wait()), поток останица в критическойсекции (значит main заблокирован) и код: //поток p первым делом ждет, чтобы main уснул synchronized(main) { } некогда не запустится, т.к. объект main заблокирован. RTFM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2006, 11:38 |
|
||
|
Как можно организовать запуск и преостанов потоков одновременно (start+wait).
|
|||
|---|---|---|---|
|
#18+
to Ненавижу регистрацию: Исходя из: "The thread releases ownership of this monitor and waits until another thread notifies threads waiting on this object's monitor to wake up either through a call to the notify method or the notifyAll method. " получается что при вызове wait блокировка снимается, а при возобновлении потока заново ставится. Получается чтото вроде: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2006, 11:54 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33654195&tid=2149658]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
188ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 513ms |

| 0 / 0 |
