|
|
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
встретил в коде такую секцию. что-то я не понимаю ее смысл. Код: java 1. Я это так понимаю: никто из этого потока не сможет обратиться к этой секции пока этот поток не освободит ее. как-то бредово. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 11:21 |
|
||
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
В коде? Используемом? В Java сертификации есть вопрос с такой фигней. В реальной жизни смысла ноль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 11:25 |
|
||
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, в оочень используемом....дебажу сижу его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 11:26 |
|
||
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, можешь привести пример когда это как-то повлияет на исполнение кода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 11:33 |
|
||
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
redwhite90можешь привести пример когда это как-то повлияет на исполнение кода? Та не особо. Может там внутри wait() ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 11:42 |
|
||
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, у тебя дар ясновидения) Не, я понимаю, что wait() и notify() можно только внутри synchronized блока писать, но если туда никто не сможет войти больше, то какой смысл.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 11:47 |
|
||
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
redwhite90у тебя дар ясновидения) У меня гугл: http://www.coderanch.com/t/517363/threads/java/synchronized-Thread-currentThread redwhite90Не, я понимаю, что wait() и notify() можно только внутри synchronized блока писать, но если туда никто не сможет войти больше, то какой смысл.... Ну, какой-то топорный механизм стопорить потоки. А notify как реализован? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 11:50 |
|
||
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, я там был, но не понял сути того, что там пишут. про notify не понял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 11:52 |
|
||
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
redwhite90про notify не понял Это же у вас код. Если есть wait() должен быть и notify(). Так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 11:57 |
|
||
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, в этом классе нет) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 12:02 |
|
||
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, наверное что-то не так с этим кодом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 12:52 |
|
||
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
redwhite90 , Код однозначно кривой. На классах java.* синхронизироваться нельзя. Не потому, что это однозначно ведет к неправильной работе программы, а потому, что вы синхронизируетесь на объектах, которые находятся вне вашего полного контроля. А это может приводить к нежелательным сайд-эффектам, из-за которых вам потом придется ломать голову. Например, берет Вася, и синхронизируется на стринге, прочитав где-то, что стринги в Java синглтоны. И деплоит свое приложение в аппсервер. Потом он радостно рассказывает об этом Пете, и тот запиливает синхронизацию на стрингах в совершенно другом приложении, и тоже деплоит его на этот же сервер. В итоге у вас возникает контеншн между разными потоками из разных приложений. Жопа? Жопа. Долго вы будете дебагать это? Очень долго, гарантирую. А потом в команду приходит Вова, который в одном месте код делает new String("blabla"). И Васин код перестает работать, потому что Вова сломал синглтон. Долго вы будете это дебагать? Долго, гарантирую. Или берете вы, и синхронизируетесь на Thread. А потом кто-то из Oracle решает в потрохах java.lang так же синхронизироваться на Thread. И что? Опять непонятный контеншн. Так что надо следовать простому правилу: синхронизироваться только на мониторах ваших объектах, которые полностью под вашим контролем. Тогда все будет хорошо. Что же до вашего кода, то не факт, что он работает неправильно. Где-то в другом месте приложения запросто может быть что-то вроде: Код: java 1. 2. 3. 4. И этот otherThread вполне может оказаться вашим Thread.currentThread(). Резюме: - Код кривой; - Но необязательно некорректный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 13:16 |
|
||
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
DEVcoach, можете написать пример кода со sleep , демонстрирующий различие кода с такой синхронизацией и без нее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 13:25 |
|
||
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
DEVcoach, Со стрингами не соглашусь. Может конкретные стринги и синглтоны, но в разных приложениях, задеплоеных на один и тот же сервер, это разные истансы. Так происходит от того, что разные приложения поднимаются разными класс-лоадерами, как раз чтобы избежать вот таких (и других) коллизий. P.S. Шареный истанс может появиться только, если оба этих приложения исользуют одну и ту же либу/jar-ку задеплоеную отдельно от этих приложений на этот сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 14:31 |
|
||
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
For AllСо стрингами не соглашусь. Может конкретные стринги и синглтоны, но в разных приложениях, задеплоеных на один и тот же сервер, это разные истансы. Так происходит от того, что разные приложения поднимаются разными класс-лоадерами, как раз чтобы избежать вот таких (и других) коллизий. Лолшто? В разных класс-лоадерах разные java.lang.String? Спешу вас разочаровать. Вы немного заблуждаетесь. For AllP.S. Шареный истанс может появиться только, если оба этих приложения исользуют одну и ту же либу/jar-ку задеплоеную отдельно от этих приложений на этот сервер. rt.jar не одна из этих либ, потому что... Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 14:35 |
|
||
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 14:41 |
|
||
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
а так без: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 14:44 |
|
||
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
redwhite90, Что это? Зачес это? Thread.sleep() же освобождает монитор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 14:45 |
|
||
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, а попробуй запустить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 14:49 |
|
||
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz Thread.sleep() же освобождает монитор. судя по всему эта предпосылка неверна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 14:58 |
|
||
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
redwhite90, Гоню. sleep() не освобождает лок, в отличие от wait(). Выходит join на коленке. Зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 14:58 |
|
||
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, поймаю автора -обязательно спрошу) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 14:59 |
|
||
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
redwhite90поймаю автора -обязательно спрошу) Зачем? Ты лучше в другом классе вытащи ссылку на поток и засинхронизируйся на ней. А автору happy debugging ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 15:01 |
|
||
|
synchronized (Thread.currentThread() ) есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz в отличие от wait(). а кстати да....получается, что это проcnj Thread.sleep() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 15:05 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38611327&tid=2127360]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
181ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 451ms |

| 0 / 0 |
