hud*_*dac 1 java multithreading buffer byte
我是Java的新手,我想实现byte[]一个线程可以写入的缓冲区,另一个线程可以读取.
它听起来应该已经实现了java,但我花了几个小时试图找到/理解几个类,我不明白它是否做我想要的,以及如何使用它.
我看到BufferedInputStream,ByteBuffer,ByteChannel,BlockingQueue...
有人可以指出一个更具体的方向吗?我用SDK 1.6
如果您希望简单地将字节从一个线程流式传输到另一个线程,我建议您使用PipedInputStream和PipedOutputStream.虽然请注意,由于设计错误,您可能需要这样的解决方案.
以下是你将如何做这样的事情,例如:
PipedOutputStream out = new PipedOutputStream();
PipedInputStream in = new PipedInputStream(out);
new YourReadingThread(in).start();
new YourWritingThread(out).start();
Run Code Online (Sandbox Code Playgroud)
然后你写的任何东西out都可供阅读in.
如果你正在寻找一个解决方案来使线程安全ByteBuffer,我建议你使用ReentrantReadWriteLock:
ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
ByteBuffer buffer = ByteBuffer.allocate(n);
// Reading thread:
lock.readLock().lock();
buffer.get(i);
lock.readLock().unlock();
// Writing thread:
lock.writeLock().lock();
buffer.put(b,i);
lock.writeLock().unlock();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1698 次 |
| 最近记录: |