Implementar um semáforo binário em java

Boa tarde galera,

Estou com um pequeno problema. Preciso implementar, com finalidade acadêmica, um semáforo binário em java sem o uso da classe semaphore. É possível faze-lo sem uso de monitores?

segue um código

import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.atomic.AtomicInteger;

public class BinarySemaphore {
AtomicInteger value; //variável atômica
ConcurrentLinkedQueue queue; // Fila FIFO

public BinarySemaphore() {
	value = new AtomicInteger(1);
	queue = new ConcurrentLinkedQueue();
}

//Operação para verificar/solicitar o semáforo
public void P(){ 
	//se o valor for zero, entra na fila de bloqueio
	//se o valor for 1 troca o valor para zero e não coloca na fila 
	if (!value.compareAndSet(1,0)) block();
}

//Operação liberar/incrementar o semáforo
public void V(){
	//se fila não vazia, libera alguem da fila
	if(!queue.isEmpty()) unblock();
	else value.set(1);
}

private void block() {
	//captura referencia ao thread atual
	Thread t = Thread.currentThread();
	//adiciona na fila de processos
	queue.add(t);
	t.suspend();
}

private void unblock(){
	//Recupera e remove a cabeça desta fila , ou retorna null se essa fila está vazia .
	Thread t = (Thread) queue.poll();
	//se fila nao vazia, libera um processo
	if (t!=null) t.resume();
}

}

O código acima funciona, porém possui métodos depreciados (suspend, resume). Gostaria de saber como faço para alterar esses métodos sem alterar a funcionalidade do Semáforo Binário, ou se existe uma melhor alternativa para o meu problema.