![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Stampede |
|
||||||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 24 Всего: 144 |
Ломая голову над одной интересной задачей, нашел совершенно потрясное решение. Решение и вправду красивое, но это такая крамола и ересь, что я решил сначала посоветоваться с вами на предмет возможных побочных явлений.
Значится, так. Есть поток. В нем происходят всякие интересные штуки. В частности, происходят обращения к компонентам, реализации которых наперед неизвестны. Компоненты эти, в свою очередь, тоже не знают, откуда их позвали. А хотелось бы владеть такой инфой. Разумеется, передать такую инфу можно миллионом разных способов, но тут есть одно но: любое из этих решений привносит зависимости и/или утяжеляет API. А хотелось бы, чтобы API был чистым и незамутненным. Короче, классическая задача для AOP. И тут я подумал... ... А что если приделать какой-нибудь контекст к самому треду? Тогда в него можно было бы совать всякую полезную инфу и по ходу добавлять разные смешные подробности! tux, see where I'm getting at? Ну и вот я давай смотреть, нет ли чего похожего в Thread. На первый взгляд как будто нет. Но вот на второй... Если внимательно приглядеться, есть такой метод, setName(String name), и соответствующий геттер. А что такое, товарищи, String name? Да ведь это же бездонное вместилище какой угодно инфы! Я, конечно, тут же сел и попробовал:
Выводит:
Работает! Вы представляете, какая моща открывается перед нами? Но не все так просто, на самом деле. Совсем просто было бы неинтересно Дело в том, что метод может выкидывать исключение, по счастью нечекнутое:
Поэтому хотелось бы поговорить на такую тему: от чего это зависит и что и при каких условиях можно гарантировать. Прошу высказываться, товарищи Это сообщение отредактировал(а) Stampede - 1.12.2005, 19:44 |
||||||
|
|||||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Не знаю огорчу тебя или порадую, но есть такая штука java.lang.ThreadLocal которая позволяет организовать контекст потока намного легче:
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
По поводу SecurityException, оно выбрасывается только если установлен SecurityManager. Для обычных приложений он как правило отсутствует, если только апплеты.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 24 Всего: 144 |
Да уж конечно порадовал. Я ж не хакер какой, чтобы любить делать вещи через задний проход Спасибо, вот чего не знал, того не знал. Кстати, если об этой штуке заранее не знаешь, то самостоятельно обнаружить ее существование не так-то просто. Если задать поиск, например, по java thread context, то все ссылки будут или про своп (аппаратного) контекста потока, или про контекстный загрузчик класса. Так что еще раз спасибо, и получите плюсом в репу |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Я нашел эту штуку когда читал про многопоточное программирование, правда по моему это была не Sun-овская дока. А еще есть хорошие утилитки для многопоточного программирования java.util.concurrent. Сам пользуюсь, очень удобно, но это правда в 1.5. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |