Java:同步缓冲区

Ped*_*dro 2 java multithreading locking synchronized

我有一个线程,即接收tcp数据包并将每一行添加到一个缓冲区ArrayList<String>.另一个线程应定期检查新数据是否可用,但仅限于缓冲区当前未锁定.但是如何检查它是否已被锁定?在C++中,我可以显式锁定互斥锁.

这是我想要做的一些伪代码:

 while(buffer.isLocked()) 
 { 
    buffer.wait();
 }

 buffer.lock();
 buffer.add(tcpPacket);
 buffer.unlock();
 buffer.notify();
Run Code Online (Sandbox Code Playgroud)

到目前为止这是我的java代码:

void process(String tcpPacket)
{

     synchronized(buffer)
     {
         buffer.add(tcpPacket);
     }
     buffer.notify();
}
Run Code Online (Sandbox Code Playgroud)

Sau*_*abh 9

这是一个标准的生产者 - 消费者问题.JDK提供了ArrayBlockingQueue以无缝方式处理它.