java Queue处理
实例代码:
1
2
3
4
5
|
import java.util.LinkedList; import java.util.Queue; private static Queue<FrameStruct> frameQueue = new LinkedList<FrameStruct>(); private static Lock lock = new ReentrantLock(); private PlayerThread p = new PlayerThread(); |
从队列取数据进行处理:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
private class PlayerThread extends Thread { @Override public void run() { FrameStruct frame; while (bPlayRun) { if (bCanFlush) { lock.lock(); while ((frame=frameQueue.poll())!= null ) { onFrame(frame.buf, 0 , frame.len); try { Thread.sleep( 30 ); } catch (InterruptedException e) { } } lock.unlock(); } } } } |
另一线程将数据放入队列:
1
2
3
4
5
6
7
|
FrameStruct frame = new FrameStruct(); frame.buf = new byte [byteCount]; frame.len = byteCount; System.arraycopy(frameData, 0 , frame.buf, 0 , byteCount); lock.lock(); frameQueue.offer(frame); lock.unlock(); |
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!