ru_java, posts by tag: threads - LiveJournal (original) (raw)
Видео материалы Юрия Ткача:JAVA для тестировщиков, JEE технологии...
На minus.com залиты видео материалы Юрия Ткача:
1. JAVA для тестировщиков - видео курс уже есть в ютубе и на торренте, залитое было выпилено с ютуба. ( Аннотация Юрия ТкачаCollapse )
( дальше...Collapse )
2. JEE Технологии проектирования программных систем
которые также есть в ютубе . Аннотация
( Юрия ТкачаCollapse )
Примечание по**( поводу отсутсвия 1х 4х лекцийCollapse )**
Можно ли сломать synchronized(this)?
March 18th, 2010
Когда-то давно, серфясь по исходникам стандартной библиотеки я был озадачен, почему сановские инженеры частенько используют для синхронизации приватные переменные, типа private final Object lock = new Object(), вместо this, или просто объявления метода как synchronized? Ладно бы еще им нужно было несколько разных блокировок -- но такая конструкция встречалась и там, где блокировка всего одна на объект. Потом я где-то прочитал, что синхронизация на this может нарушать инкапсуляцию объекта, поскольку в общем случае состояние монитора является частью состояния объекта, а если монитор -- сам объект, так ведь он доступен всем, кому не лень. Сходу я не смог подобрать пример возможных косяков, но в памяти отложилось. А недавно повторял основы синхронизации, и у меня родился такой пример. Хочу поделиться с сообществом -- вдруг для кого будет интересным.
Состояние потока после вызова Wait(Timeout)
September 6th, 2009
Есть несколько потоков завязанных посредством synchronized на один и тот же объект 0x00007f6ccdc374c0
Все они кроме одного находятся в состоянии WAITING на получении блокировки на 0x00007f6ccdc374c0
Оставшийся поток, работает аналогично таймеру: делает полезную работу, затем выполняет Wait(timeout ) на 0x00007f6ccdc374c0
и так далее периодически.
callstack для данного потока
ВОПРОС: Почему поток находится в состоянии BLOCKED вместо WAITING?
"Thread-10" BLOCKED
"Thread-10" daemon prio=10 tid=0x0000000043c41800 nid=0x1aec waiting for monitor entry [0x00007f6cab4f3000]
java.lang.Thread.State: BLOCKED (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <**0x00007f6ccdc374c0**> (a com.arjuna.ats.arjuna.coordinator.TransactionReaper)
at com.arjuna.ats.internal.arjuna.coordinator.ReaperThread.run(ReaperThread.java:98)
- locked <**0x00007f6ccdc374c0**> (a com.arjuna.ats.arjuna.coordinator.TransactionReaper)
Locked ownable synchronizers:
- None
ПС. Java 1.6 64bit OS: Debian
Потоки: как отслеживать создание и завершение?
May 30th, 2008
Есть простой веб-краулер, который рекурсивно обходит все ссылки с некоторой страницы.
При однопоточном обходе всё просто и очевидно, но при многопоточном есть следующая проблема:
каждая ссылка стартует в новом потоке и хочется вывести обхода после завершения всех рабочих потоков. Ищу способ отслеживать эти потоки, кроме как Thread.activeCount()
При попытке посчитать стартующие и завершающиеся потоки через простой счётчик возникает проблема "медленно" стартующих потоков, ( подробностиCollapse )
September 26th, 2007
Здравствуйте.
У нас возникла потребность в использовании thread pool.
Какие инструменты Вы могли бы посоветовать?
Программа бежит в среде JBoss, но пока мы используем только его web-контейнер.
Спасибо.