多个端口和线程

时间:2013-07-31 12:08:48

标签: java android multithreading udp port

我正在设计Android软件,我必须收听n个端口,比如说10.每隔100ms,我想查看端口是否有新的UDP数据包。收到数据包后,内部数据应该传递给UI线程。

我的问题是我应该使用一个线程来接收来自所有不同端口的数据,还是应该为每个端口创建自己的线程,每次都以100毫秒的间隔运行?在这些情况下,良好的做法是什么?

当port有数据时,它被反序列化为一个对象,然后用于更新UI线程中Views中的数据。

我对socket编程和更高级的并发编程都很陌生,所以我一直在犹豫,没有从网上找到任何好的答案。

2 个答案:

答案 0 :(得分:1)

My question is should I use one thread to receive data from all different ports or 
should I create own thread for every port, each timed to run at 100ms interval? 
What is the good practice in these cases?

这并不重要。如果您创建一个线程,则必须跟踪不同的端口。如果您创建多个线程,则必须跟踪所有这些线程。由于现在cpu通常是多线程的,我会选择多线程。

对于100毫秒定时器间隔,您可以创建一个循环遍历所有线程并从这些线程收集数据的定时器。确保你锁定它,这样如果计时器在前一个事件仍在忙于收集数据时过去,这两个不会相互干扰。

答案 1 :(得分:1)

每个插槽有一个线程似乎有点过分,除非反序列化对象的时间过长,否则你将看不到任何好处。

就个人而言(并且像bas指出的那样;其中没有太多内容)我会从简单开始,有一个线程检查10个端口循环并在检查之间休眠。如果您开始发现线程处理数据花费了太多时间,并且检查的每个端口之间的时间太长,那么您可以在该点向池中添加更多线程。