Задача классическая. Есть два потока выполняющих какую то работу, и по завершению вызывающие метод workDone(this) известного им обоим одного экземпляра планировщика. Данный метод выполняемый в двух разных потоках запускает впоследствии некий другой поток если это не сделали до него. Проблема в том что эти начальные два потока могут завершить выполнение одновременно, следовательно код будет выполнен параллельно, и оба проскочат в выставленную блокировку типа:
Код: Выделить всё
if(!blocked){
blocked=true;
startNewTherad();
}
в результате чего будет сформировано два потока вместо одного.
Делать отдельный таймер сидящий в потоке планировщика и опрашивающий каждую милисекунду классы вышеизложенных потоков кажется не совсем разумным. Быть может есть более красивое решение известное андроид сообществу?