ru_java, posts by tag: threads - LiveJournal (original) (raw)

Видео материалы Юрия Ткача:JAVA для тестировщиков, JEE технологии...

На minus.com залиты видео материалы Юрия Ткача:
1. JAVA для тестировщиков - видео курс уже есть в ютубе и на торренте, залитое было выпилено с ютуба. ( Аннотация Юрия ТкачаCollapse )

( дальше...Collapse )
2. JEE Технологии проектирования программных систем
которые также есть в ютубе . Аннотация
( Юрия ТкачаCollapse )

Примечание по**( поводу отсутсвия 1х 4х лекцийCollapse )**

( video дальше...Collapse )

Можно ли сломать synchronized(this)?

dj_begemot

March 18th, 2010

Когда-то давно, серфясь по исходникам стандартной библиотеки я был озадачен, почему сановские инженеры частенько используют для синхронизации приватные переменные, типа private final Object lock = new Object(), вместо this, или просто объявления метода как synchronized? Ладно бы еще им нужно было несколько разных блокировок -- но такая конструкция встречалась и там, где блокировка всего одна на объект. Потом я где-то прочитал, что синхронизация на this может нарушать инкапсуляцию объекта, поскольку в общем случае состояние монитора является частью состояния объекта, а если монитор -- сам объект, так ведь он доступен всем, кому не лень. Сходу я не смог подобрать пример возможных косяков, но в памяти отложилось. А недавно повторял основы синхронизации, и у меня родился такой пример. Хочу поделиться с сообществом -- вдруг для кого будет интересным.

( дальше идет кодCollapse )

Состояние потока после вызова Wait(Timeout)

balmaster

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

Потоки: как отслеживать создание и завершение?

the_very

May 30th, 2008

Есть простой веб-краулер, который рекурсивно обходит все ссылки с некоторой страницы.
При однопоточном обходе всё просто и очевидно, но при многопоточном есть следующая проблема:
каждая ссылка стартует в новом потоке и хочется вывести обхода после завершения всех рабочих потоков. Ищу способ отслеживать эти потоки, кроме как Thread.activeCount()
При попытке посчитать стартующие и завершающиеся потоки через простой счётчик возникает проблема "медленно" стартующих потоков, ( подробностиCollapse )

thread pool

ezus

September 26th, 2007

Здравствуйте.
У нас возникла потребность в использовании thread pool.
Какие инструменты Вы могли бы посоветовать?
Программа бежит в среде JBoss, но пока мы используем только его web-контейнер.
Спасибо.