|
|
|
lock with timeout
|
|||
|---|---|---|---|
|
#18+
Есть разделяемый ресурс (метод) , когда какой нибудь один поток выполняет этот метод, все остальные которые пытаются его дернуть должный перейти в состояние ожидания, но должны ждать не "всегда" а только определенный промежуток времени и если в течении этого времени ресурс не освободиться то кидать эксепшин и завершать работу. Это легко делаться с помощью wait/notify , но решил заюзать java.util.concurrent (см код ниже). Покритикуйте решение :) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2012, 15:42:10 |
|
||
|
lock with timeout
|
|||
|---|---|---|---|
|
#18+
OOsalivan, Может попробовать Condition И Код: java 1. Вроде бы лучше в finally оборачивать. Или как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2012, 16:03:54 |
|
||
|
lock with timeout
|
|||
|---|---|---|---|
|
#18+
МорфийOOsalivan, Может попробовать Condition И Код: java 1. Вроде бы лучше в finally оборачивать. Или как? Как именно Condition попробовать? Лучше в finally но в том и смысл примера что если мы не сделали lock.unlock() в течении заданного промежутка времени и при этом на локе висели потоки то кидать эксепшин ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2012, 16:34:52 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2131812]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
45ms |
get topic data: |
12ms |
get first new msg: |
8ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 310ms |
| total: | 470ms |

| 0 / 0 |
