У меня есть один поток, который получает пакеты tcp, и добавляю каждую строку в буфер, который является ArrayList<String>
.
Другой поток должен периодически проверять, доступны ли новые данные, но только если буфер в настоящий момент не заблокирован. Но как я могу проверить, был ли он заблокирован? В C ++ я мог явно заблокировать мьютекс.
Вот какой-то псевдокод того, что я хотел бы сделать:
while(buffer.isLocked())
{
buffer.wait();
}
buffer.lock();
buffer.add(tcpPacket);
buffer.unlock();
buffer.notify();
Это мой код Java:
void process(String tcpPacket)
{
synchronized(buffer)
{
buffer.add(tcpPacket);
}
buffer.notify();
}