这里我有一个j2me应用程序,我需要从输出流传输或保存实时数据。
如果我使用一个线程将数据写入流并且在写入某些没有字节之外的其他线程以获取字节数据之后会发生什么情况会保存或传输它并将流重置为零...
即在它上面调用reset ..这实际上等于使用stream作为固定大小的缓冲区..
这里的约束是我可能无法将byteBuffer对象用于此目的
是否会使流无效,因为第一个线程仍然连接到它?
答案 0 :(得分:1)
我假设您将使用java.io.ByteArrayOutputStream
类,这是J2ME CLDC 1.0
标准的一部分。
CLDC 1.0没有说明ByteArrayOutputStream
的线程安全性。
但如果你看一下ByteArrayOutputStream
的实现,那么所有需要的方法似乎都是synchronized
:
public synchronized byte toByteArray()[] { ... }
public synchronized void reset() { ... }
public synchronized void write(byte b[], int off, int len) { ... }
如果您可以访问J2ME类的源代码。你可以仔细检查一下。
如果方法是同步的,那么在计划时使用流应该是安全的。