【发布时间】:2013-02-10 03:30:59
【问题描述】:
我有两个线程。一个用于生成数据,第二个用于将它们发送到服务器。这是典型的生产者-消费者情况吗? 为此,我构建了用于管理同步队列的简单代码 - 我希望:我做的或多或少是正确的?请问有人可以回答我吗?我的代码如下:
public ArrayList<String> Packets;
public synchronized void add_to_Queue (String data) {
Packets.add(data);
}
public synchronized void del_from_Queue (int position) {
Packets.remove(position);
}
public synchronized String read_from_ Queue(int position) {
return Packets.get(position);
}
public synchronized int number_of_element_of_Queue() {
return Packets.size();
}
第一个线程通过使用简单的命令添加新数据:
add_to_Queue("XYZ);
第二个循环发送数据:
while (OK)
{
try
{
while (number_of_element_of_Queue()>0)
{
out.write(read_from_Queue(0)+"\n");
out.flush;
del_from_Queue(0); // if no error delete just sent element
}
}
catch (IOException e1)
{
reconnect();
}
}
我认为有些问题是因为发送静态数据(简单的静态文本而不是从我的“队列”中读取)不会导致重新连接(即在 catch (IOException e1) 之后)。但是当我使用提供的代码时,它经常发生,尤其是在重新连接之后。它会执行多次(发送一些数据、重新连接、发送更多数据、再次重新连接等等)。
【问题讨论】:
标签: java android queue synchronized