Я пишу класс (Foo), который при создании экземпляра может быть вызван из нескольких потоков.java не обнаруживает других потоков в объекте
Большинство методов класса Foo можно безопасно вызывать несколькими потоками параллельно. Один из методов этого класса (logout()) требует, чтобы все остальные потоки выполнялись.
Прежде чем выйти из системы, ссылка на foo удаляется из поточно-безопасной коллекции. Таким образом, ни один новый поток не получит ссылку на объект Foo. Тем не менее, могут существовать существующие потоки, которые работают с ссылками на объект Foo, который должен быть выведен из системы.
У меня может быть счетчик, который увеличивается каждый раз, когда поток входит в объект и уменьшается каждый раз, когда нить уходит. В logout() я мог бы вращаться во время (counter! = 0);
Но я думаю, что есть, вероятно, более четкий способ/шаблон, чтобы сделать это. Ищите мудрость сообщества stackoverflow здесь.
Мне это нравится. Это то, что я искал. Спасибо, Джаред. – rouble
Но что, если есть более 2^31-1 потоков, обращающихся к объекту? ;) –